现在使用一段代码,其中包含以下形式的声明:
typedef PACKED(struct)
{
// some stuff in here
} struct_name;
现在...... PACKED是我们的一个宏。这句话的意思是什么? 我不明白使用括号。这不是编译,所以我猜这可能是不正确的。这接近其他一些有效的语法,还是只是废话?
如果它几乎有效.. 这段代码实际上应该如何编写,它应该是什么意思?
我见过并且可以在网上找到的唯一形式的typedef结构是:
typedef struct
{
// some stuff in here
} struct_name;
解决:我需要意识到的是结构是宏函数中的参数。谢谢!
答案 0 :(得分:2)
通常所有大写的内容都是宏。在这种情况下,它可能应该使用创建压缩结构的语法来装饰struct声明,这将根据使用的编译器而有所不同。
您可能完全错过了PACKED宏的定义。
答案 1 :(得分:1)
大多数编译器都提供了指定结构应该如何存储在内存中的功能。它很少使用,但packed
通常意味着*have this structure occupy the least space possible, even at a loss of speed in accessing its members*
。
鉴于你的代码没有编译,我会说PACKED
很可能是一个宏现在丢失了,或者你正在使用的那个中没有特定于编译器的关键字。
答案 2 :(得分:1)
使用该语法,PACKED必须是一个宏。
可能指某种结构对齐方式
__attribute__(packed, aligned(1))
#pragma pack(push,1)
//...
#pragma pack(pop)
虽然我们很难告诉你,而不是相反:))