C语言 使用位域初始化结构的常量数组



我想初始化一个const结构数组。这些结构具有位域成员。

以下是我的代码片段:

typedef struct {
unsigned int a : 1;
unsigned int b : 1;
unsigned int c : 1;
} Character;
const static Character Char[] =
{
{.a = 0, .b = 0, .c = 1},
{.a = 0, .b = 1, .c = 0},
{.a = 1, .b = 0, .c = 1}
};

尝试这种方式时,我遇到了许多错误,例如unexpected initialization syntaxmissing ;.

正确的方法是什么?

更新

我正在使用COSMIC编译器(CXSTM8(。我查看了其用户指南,但找不到这方面的任何信息。

你给出的语法是正确的。指定的初始值设定项列表是在 C99 中引入的。

如果您的编译器不支持此功能,则需要选择下一个最佳选项,即初始化位字段中的所有成员。

typedef struct {
unsigned int a : 1;
unsigned int b : 1;
unsigned int c : 1;
} Character;
const static Character Char[] =
{
{0, 0, 1},
{0, 1, 0},
{1, 0, 1}
}; 

相关内容

  • 没有找到相关文章

最新更新