int readint(__packed int *data)
{
return *data;
}
我在__packed
声明中看到struct
属性以避免填充。但是,在函数参数中使用__packed
属性有什么好处。
author表示他已使用__packed
告诉编译器整数可能未对齐。这意味着什么?
编辑:以下内容适用于gcc
编译器
int readint(__attribute__((packed)) int *data)
{
return *data;
}
答案 0 :(得分:4)
__packed
限定符是ARM发布的armcc
C编译器的特定于编译器的功能。 A full explanation is present in their documentation,但简而言之,它表明不应该在限定对象中插入用于对齐的填充,并且应该访问具有此限定符的指针,就好像它们可能未对齐一样。 (这可能会导致某些处理器生成较慢的代码,因此不应无偿使用。)
请注意,此不与GCC packed
属性相同,后者仅适用于struct
和union
类型定义。