uint32 InterruptLatency;
uint8 measurements[32];
char buf[256];
int kernelinterrupt time()
{
fscanf(fp,"%lu", InterruptLatency);  // I am reading the data from kernel which is not shown here
measurements[17] = InterrupLatency;
buf = &measurements;            // I am getting error here as below

// after storing it in buffer I am  sending the data from but to another layer
}

错误:从uint8(*)[32]类型分配char[256]类型时,类型不兼容
有人能帮我解决这个问题吗??

最佳答案

在C语言中,不能分配数组。你必须显式地复制内存。
可能你想这样做:

memcpy(buf, measurements, sizeof(measurements));

但你没有透露你真正想做什么的细节。
附:你的fscanf()是错的。它应该取保存读取值的变量的地址。
如果使用uint32_t,则应使用SCNu32规范,以确保不会破坏:
fscanf(fp,"%"SCNu32, &InterruptLatency);

关于c - 不兼容的C型错误?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23336289/

10-12 16:01