1

我在 MicroChip 的一个示例代码中遇到了这段代码。我无法理解它的确切含义

typedef struct __attribute__((packed))
{
    BYTE command;
    BYTE data;
} ACCESSORY_APP_PACKET;

我可以理解正在创建一个别名为 ACCESSORY_APP_PACKET 的结构,但这是什么__attribute__((packed))意思?它__attribute__作为一个功能。但如果是这样,它是如何作为结构被 typedef 的?
BYTE 是 Microchip 制造的一种已知数据类型。

谢谢。

4

3 回答 3

3

__attribute__是一个gcc编译器选项,它指定编译器在编译时的单独行为。

在您的情况下,它告诉编译器不要在结构成员之间使用填充。

于 2013-03-28T10:25:18.253 回答
2

它不是 typedef 的一部分,也不是函数。它是一个编译器扩展,使用的语法可能看起来“类似函数”。它用于更改结构成员在内存中的打包方式,因此它使用最小的空间,而不是以可能执行得更快的可能更大的方式打包。

于 2013-03-28T10:25:56.060 回答
0

不,这不是一个函数。它是一个属性(这是一个 GNU 扩展)。它指定结构的成员之间不应该有填充(否则可以有)。

于 2013-03-28T10:25:20.833 回答