Reputation: 1829
I know as the name says, it triggers when there are missing field initializers. But it didn't trigger any warnings for the following code.
#include <stdio.h>
struct test {
int a, b, c;
};
void func(struct test test) {
printf("%d, %d, %d\n", test.a, test.b, test.c);
}
int main() {
func((struct test) {12, .a = 1, 12, .a = 13, .b = 13});
return 0;
}
It compiles with no warnings when I run gcc test.c -Wmissing-field-initializers
. And it prints out 13, 13, 0
. Is this the default behaviour of -Wmissing-field-initializers
?
Upvotes: 2
Views: 227
Reputation: 41017
From the documentation:
This option does not warn about designated initializers
try
#include <stdio.h>
struct test {
int a, b, c;
};
void func(struct test test) {
printf("%d, %d, %d\n", test.a, test.b, test.c);
}
int main() {
func((struct test) {1, 2}); // Now you get a warning
return 0;
}
Upvotes: 2