如何修复 gcc 警告:缺少“struct <anonymous>”字段的初始值设定项?

问题描述 投票:0回答:1

我有一个包含匿名结构的联合类型定义。当尝试初始化它时,我总是收到 gcc 4.9.2 (-Wall -Wextra -pedantic) 关于缺少字段初始化程序的警告。但是它似乎按预期工作。是不是下面初始化变量的方式有问题?

#include <stdio.h>

typedef union {
  unsigned int raw;
  struct {
    unsigned short hue;
    unsigned char  saturation;
    unsigned char  value;
  };
} HSV;

int main() {
    HSV color = {.hue = 1, .saturation = 2, .value = 4};

    printf("hue: %d, saturation: %d, value: %d, raw: %08X\n", color.hue, color.saturation, color.value, color.raw);
}

编译 gcc 时会给出一些警告。

$ gcc -Wall -Wextra -pedantic -std=gnu11 main.c 
main.c: In function 'main':
main.c:13:2: warning: missing initializer for field 'saturation' of 'struct <anonymous>' [-Wmissing-field-initializers]
  HSV color = {.hue =   1, .saturation = 2, .value = 4};
  ^
main.c:7:20: note: 'saturation' declared here
     unsigned char  saturation;
                    ^
main.c:13:2: warning: missing initializer for field 'value' of 'struct <anonymous>' [-Wmissing-field-initializers]
  HSV color = {.hue =   1, .saturation = 2, .value = 4};
  ^
main.c:8:20: note: 'value' declared here
     unsigned char  value;
                    ^
$ ./a.out 
hue: 1, saturation: 2, value: 4, raw: 04020001
gcc gcc-warning
1个回答
0
投票

这个错误有什么解决办法吗?我也有错误:'struct capabilities' [-Werror=missing-field-initializers] 的字段 'otherFeatR16' 缺少初始值设定项

© www.soinside.com 2019 - 2024. All rights reserved.