|
最近看硬汉写的RTX5代码,
结构体初始化赋值,看代码很简单和灵活:
- const osThreadAttr_t ThreadMsgPro_Attr =
- {
- .name = "osRtxMsgProThread",
- .attr_bits = osThreadDetached,
- .priority = osPriorityHigh3,
- .stack_size = 1024,
- };
复制代码
摘录了C Primer Plus第6版443页相关章节的内容,
可以更直观的理解采用这种方式的优势就在于由此初始化不必严格按照定义时的顺序。带来了极大的灵活性。
已知一个结构,定义如下
struct book {
char title[MAXTITL];
char author[MAXAUTL];
float value;
};
C99支持结构的指定初始化项目,其语法与数组的指定初始化项目近似。
只是,结构的指定初始化项目使用点运算符和成员名(而不是方括号和索引值)来标识具体的元素。
例如,只初始化book结构的成员value,可以这样做:
struct book surprise = { .value = 10.99 };
可以按照任意的顺序使用指定初始化项目:
- <span style="color: rgb(77, 77, 77); font-family: 'Microsoft YaHei', 'SF Pro Display', Roboto, Noto, Arial, 'PingFang SC', sans-serif;"> struct book gift =</span>
复制代码
正像数组一样,跟在一个指定初始化项目之后的常规初始化项目为跟在指定成员后的成员提供了初始值。另外,对特定成员的最后一次赋值是它实际获得的值。例如,考虑下列声明:
struct book gift =
{
.value = 18.90,
.author = "Philionna pestle",
0.25
};
这将把值0.25赋给成员value,因为它在结构声明中紧跟在author成员之后。
新的值0.25代替了早先的赋值18.90。
|
|