函数参数中__packed属性的用途是什么

时间:2015-01-28 07:06:00

标签: c padding armcc

int readint(__packed int *data)
{
    return *data;
}

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

author表示他已使用__packed告诉编译器整数可能未对齐。这意味着什么?

编辑:以下内容适用于gcc编译器

int readint(__attribute__((packed)) int *data)
{
    return *data;
}

1 个答案:

答案 0 :(得分:4)

__packed限定符是ARM发布的armcc C编译器的特定于编译器的功能。 A full explanation is present in their documentation,但简而言之,它表明不应该在限定对象中插入用于对齐的填充,并且应该访问具有此限定符的指针,就好像它们可能未对齐一样。 (这可能会导致某些处理器生成较慢的代码,因此不应无偿使用。)

请注意,此与GCC packed属性相同,后者仅适用于structunion类型定义。