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/