我是一个C源代码,我想确保我的结构的所有元素都很好地启动.使用警告Wmissing-field-initializers会很容易.但我也希望能够使用指定的initilizer初始化我的元素.
例如:
struct s {
int a;
int b;
};
struct s s1 = { .a = 1, .b = 2 };
struct s s2 = { .a = 1 };
struct s s3 = { 1, 2 };
struct s s4 = { 1 };
Run Code Online (Sandbox Code Playgroud)
我们试着编译一下:
$ gcc -Wmissing-field-initializers -c struct_init.c
struct_init.c:9:8: warning: missing initializer
struct_init.c:9:8: warning: (near initialization for ‘s4.b’)
Run Code Online (Sandbox Code Playgroud)
我想编译也失败了s2启动.我更喜欢指定的初始化,因为它有助于源代码读取.
当您使用指定初始值设定项时,缺少的成员将被初始化为0。即使对象具有自动存储期限,情况也是如此。据我所知,在使用指定初始值设定项时,没有任何选项可以警告未gcc显式初始化的成员。