【发布时间】:2012-07-18 08:01:28
【问题描述】:
我已经在定义为的头文件中构建了一个使用常量的工作 C 库
typedef struct Y {
union {
struct bit_field bits;
uint8_t raw[4];
} X;
} CardInfo;
static const CardInfo Y_CONSTANT = { .raw = {0, 0, 0, 0 } };
我知道 .raw 初始化器是仅限 C 的语法。
如何定义带有联合的常量,以便在 C 和 C++ 中使用它们。
【问题讨论】:
-
你确定混合模式标签吗?
-
C++ 不是通过第一个元素初始化
unions 吗? IE。static const Y_CONSTANT = {{0,0,0,0}}; -
@YePhIcK 然后它会给出关于缺少大括号的额外警告。
-
@Alex - 我刚刚尝试了我的代码,它构建得很好,没有错误/警告。你确定你使用的是双括号吗? typedef struct Y { union { struct bit_field bits; uint8_t 原始[4]; } X; } 卡片信息;静态常量 CardInfo Y_CONSTANT = {{0, 0, 0, 0 } };
-
这是正确的,语言就是这样——你可以初始化并集的第一个元素,并且只能初始化第一个
标签: c++ c initialization unions c++03