gpt4 book ai didi

c - 使用 GCC "-Wextra"选项编译时如何初始化 C 结构而不产生警告?

转载 作者:行者123 更新时间:2023-12-04 12:37:30 25 4
gpt4 key购买 nike

#include <stdio.h>
#include <string.h>

typedef struct STest
{
unsigned int uiRoll;
unsigned short usiVal;
} TTest;

int main()
{
TTest oTest = {0}; /* Initialize the Values with 0 */
printf( "The values are: %d, %d\n", oTest.uiRoll, oTest.usiVal );
return 0;
}

观察:

  1. 使用 gcc -Wextra -o aa.cpp 编译
  2. 收到警告:警告:缺少成员 STest::usiVal 的初始值设定项
  3. 我也尝试使用 memset 函数,但仍然收到相同的警告。
  4. 第一个结构元素没有警告消息。

如何初始化结构?这样就没有警告信息了。

最佳答案

为什么不初始化两个成员?

TTest oTest = {0, 0};

或者,可能更好:

TTest oTest = { .uiRoll = 0, .usiVal = 0};  

(假设您确实在编写 C 代码,应该使用 gcc 编译并以 .c 的扩展名保存。如果您将该代码保存在具有 .cpp 扩展名的文件,gcc 将切换到 C++ 模式,并在第二个版本上失败。)

另一种选择:将您的编译器升级到 GCC >= 4.7.2(可能普通的 4.7.0 就足够了)。该警告已删除,您可以使用代码中的简短形式。

关于c - 使用 GCC "-Wextra"选项编译时如何初始化 C 结构而不产生警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16318250/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com