我在MicroChip的一个示例代码中遇到了这段代码。我无法理解它究竟意味着什么
typedef struct __attribute__((packed))
{
BYTE command;
BYTE data;
} ACCESSORY_APP_PACKET;
我可以理解正在创建一个结构别名的ACCESSORY_APP_PACKET,但__attribute__((packed))
是什么意思?它使__attribute__
成为一个函数。但如果是这样的话,它是如何被作为结构的typedef?
BYTE是Microchip生产的已知数据类型。
感谢。
答案 0 :(得分:3)
__attribute__
是一个gcc
编译器选项,它指定编译器在编译时的单独行为。
在你的情况下,它告诉编译器不要在结构成员之间使用填充。
答案 1 :(得分:2)
它不是typedef的一部分,也不是函数。它是一个使用语法的编译器扩展,可能看起来像“类似函数”。它用于更改结构成员在内存中打包的方式,因此它使用最小的空间,而不是以可能更快的方式打包,可能执行得更快。
答案 2 :(得分:0)
不,这不是一个功能。这是一个属性(这是一个GNU扩展)。它指定结构的成员之间不应该有填充(否则可以)。