int readint(__packed int *data)
{
return *data;
}
Run Code Online (Sandbox Code Playgroud)
我__packed在struct声明中看到了避免填充的属性。但是,__packed在函数参数中使用属性有什么好处。
该作者说,他已经习惯__packed告诉整数可能不对齐的编译器。这是什么意思?
编辑:以下是否适用于gcc编译器
int readint(__attribute__((packed)) int *data)
{
return *data;
}
Run Code Online (Sandbox Code Playgroud)
小智 6
该__packed限定词是一个编译器特定的特征armccC编译器,它由ARM出版。他们的文档中有完整的解释,但简而言之,它表明不应将用于对齐的填充插入到限定对象中,并且应访问带有此限定符的指针,就好像它们可能未对齐一样。(这可能会导致某些处理器生成较慢的代码,因此不应无故使用它。)
请注意,这是不一样的GCCpacked属性,它仅适用于struct和union类型定义。