int readint(__packed int *data)
{
return *data;
}为了避免填充,我在__packed声明中看到了struct属性。但是,在函数参数中使用__packed属性的好处是什么。
作者说,他已经使用__packed告诉编译器,整数可能无法对齐。这意味着什么?
编辑:将与gcc编译器一起工作
int readint(__attribute__((packed)) int *data)
{
return *data;
}发布于 2015-01-28 07:15:32
__packed限定符是ARM发布的armcc C编译器特有的编译器特性.他们的文件中有一个完整的解释。,但是简单地说,它表明不应该将用于对齐的填充插入到限定对象中,并且应该访问带有该限定符的指针,就好像它们可能被错对齐一样。(这可能会导致为某些处理器生成较慢的代码,因此不应该无偿使用它。)
请注意,这与GCC packed属性不同,后者仅适用于struct和union类型定义。
https://stackoverflow.com/questions/28186492
复制相似问题