在嵌入式C代码中使用typedef结构

时间:2013-03-28 10:22:51

标签: c syntax typedef

我在MicroChip的一个示例代码中遇到了这段代码。我无法理解它究竟意味着什么

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

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

感谢。

3 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:2)

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

答案 2 :(得分:0)

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