这是一种有效的类型定义结构吗?如果是,它意味着什么?
Is this a valid form of typedef struct and if so, what does it mean?
现在正在处理一段代码,它的特点是声明的形式:
typedef PACKED(struct)
{
// some stuff in here
} struct_name;
现在…PACKED是我们的一个宏。这个语法到底是什么意思?我不明白括号的用法。这不是编译,所以我猜这可能是不正确的。这是接近于其他一些有效的语法,还是只是无稽之谈?
如果它几乎是有效的…这段代码实际上应该怎么写,它应该是什么意思?
我所见过并能在网上找到的唯一形式的类型定义结构是:
typedef struct
{
// some stuff in here
} struct_name;
已解决:我只需要认识到struct是宏函数的一个参数。谢谢!
通常所有大写的东西都是宏。在这种情况下,它可能应该用创建打包结构的语法来修饰结构声明,这将根据所使用的编译器而变化。
很可能你完全错过了pack宏的定义。
大多数编译器都提供了指定结构体如何存储在内存中的功能。它很少使用,但packed
通常表示*have this structure occupy the least space possible, even at a loss of speed in accessing its members*
。
考虑到你的代码不编译,我想说PACKED
很可能是一个宏现在丢失了,或者一个编译器特定的关键字不可用在你正在使用的。
按照这种语法,PACKED必须是一个宏。
可能指的是某种结构体对齐方式
__attribute__(packed, aligned(1))
#pragma pack(push,1)
//...
#pragma pack(pop)
虽然我们很难告诉你,相反的:))
相关文章:
- 提升精神 x3 解析为结构,如果它为空,则跳过成员
- 如果结构中的字符串比使用的 p/调用签名长或短,会发生什么情况?
- 如果不初始化结构中的向量,它会自动为空还是具有随机内存位置的值?
- 如果在结构内部使用condition_variable,则它不起作用
- 如何修改此函数,以便如果函数的参数是特定结构,则返回具有较大整数的结构?
- C++:如果 std::atomic_flag 是唯一的无锁原子类型,如何在C++中实现无锁数据结构?
- unordered_set是否适合存储矢量<int>元素的数据结构?如果是这样,我将如何实现哈希函数?
- 如果存在具有不同参数的继承成员,为什么对 C++ 结构函数的调用不明确?
- 首选数据结构,如果您有两个键并且无法使用Boost
- 如果对象在同一层次结构中,-Wreturn-std-move clang 警告是否正确
- 如何使用 boost 连接映射的键和值,特别是如果值是结构
- 如果enable_if确定 T 是容器,则启用结构
- 如果将其添加为全局结构,则如何将其添加为NULL
- 如果所述结构具有构造函数,则带有 new[] 的结构数组似乎不起作用
- 如果其他成员跟在结构成员的末尾,则写入/读取该末尾
- 如果结构作为递归函数中的参数传递,如何初始化结构的成员变量
- 如果我想在执行过程中将其内存减少一半,我可以使用哪种数据结构
- 如果将键定义为std :: string,则存储在REDIS中的POD结构的验证将失败
- 如果结构化绑定不能是 constexpr,为什么它们可以在 constexpr 函数中使用?
- 如果我使用的是私有结构,如何将其声明为上面列出的成员函数的公共参数?