Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
360 views
in Technique[技术] by (71.8m points)

c - When does -Wmissing-field-initializers triggers warning?

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
", 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?

question from:https://stackoverflow.com/questions/65857980/when-does-wmissing-field-initializers-triggers-warning

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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
", test.a, test.b, test.c);
}

int main() {
    func((struct test) {1, 2}); // Now you get a warning
    return 0;
}

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

1.4m articles

1.4m replys

5 comments

57.0k users

...