__packed 属性在函数参数中有什么用

man*_*m-n 3 c padding armcc

int readint(__packed int *data)
{
    return *data;
}
Run Code Online (Sandbox Code Playgroud)

__packedstruct声明中看到了避免填充的属性。但是,__packed在函数参数中使用属性有什么好处。

作者说,他已经习惯__packed告诉整数可能不对齐的编译器。这是什么意思?

编辑:以下是否适用于gcc编译器

int readint(__attribute__((packed)) int *data)
{
    return *data;
}
Run Code Online (Sandbox Code Playgroud)

小智 6

__packed限定词是一个编译器特定的特征armccC编译器,它由ARM出版。他们的文档中有完整的解释,但简而言之,它表明不应将用于对齐的填充插入到限定对象中,并且应访问带有此限定符的指针,就好像它们可能未对齐一样。(这可能会导致某些处理器生成较慢的代码,因此不应无故使用它。)

请注意,这是一样的GCCpacked属性,它仅适用于structunion类型定义。