int readint(__packed int *data)
{
return *data;
}
我__packed
在声明中看到了属性struct
以避免填充。__packed
但是,在函数参数中使用属性有什么好处。
作者说他曾经告诉__packed
编译器整数可能不对齐。这是什么意思?
编辑:以下内容是否适用于gcc
编译器
int readint(__attribute__((packed)) int *data)
{
return *data;
}
限定符是ARM 发布的 C 编译器的__packed
编译器特定功能。他们的文档中提供了完整的解释,但简而言之,它表明不应将对齐填充插入限定对象中,并且应访问具有此限定符的指针,就好像它们可能未对齐一样。(这可能会导致某些处理器生成较慢的代码,因此不应无偿使用。)armcc
请注意,这与GCC属性不同,packed
后者仅适用于类型定义。struct
union