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

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

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

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

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

1 回答 1

6

限定符是ARM 发布的 C 编译器的__packed编译器特定功能。他们的文档中提供了完整的解释,但简而言之,它表明不应将对齐填充插入限定对象中,并且应访问具有此限定符的指针,就好像它们可能未对齐一样。(这可能会导致某些处理器生成较慢的代码,因此不应无偿使用。)armcc

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

于 2015-01-28T07:15:32.573 回答