是否可以为某些 struct 成员设置默认值?

typedef struct
{
  int flag = 3;
} MyStruct;

错误:

$ gcc -o testIt test.c 
test.c:7: error: expected ‘:’, ‘,’, ‘;’, ‘}’ or ‘__attribute__’ before ‘=’ token
test.c: In function ‘main’:
test.c:17: error: ‘struct <anonymous>’ has no member named ‘flag’

推荐答案

struct 是data type.您不会给数据类型赋值.您为数据类型的实例/对象赋值.
所以不,这在C中是不可能的.

相反,您可以编写一个函数来执行 struct 实例的初始化.

或者,你可以:

struct MyStruct_s 
{
    int id;
} MyStruct_default = {3};

typedef struct MyStruct_s MyStruct;

然后始终将新实例初始化为:

MyStruct mInstance = MyStruct_default;

C++相关问答推荐

位屏蔽对于无符号转换是强制的吗?

C指针地址和转换

我应该如何解决我自己为iOS编译的xmlsec1库的问题?转换Ctx.first在xmlSecTransformCtxPrepare()之后为空

SDL 2.0-从数组渲染纹理

如何在C宏中确定 struct 中元素的类型?

文件权限为0666,但即使以超级用户身份也无法打开

如何在C中打印包含扫描字符和整数的语句?

使用sscanf获取零个或多个长度的字符串

如何使用C++在控制台中以彩色打印被阻止的客户端

可变宏不能编译

这个空指针类型的转换是有效代码还是恶意代码?

这段代码用于在C中以相反的顺序打印数组,但它不起作用

Go和C中的数据 struct 对齐差异

Fscanf打印除退出C代码为1的程序外的所有内容

发送和接收的消息中的Unix域套接字不匹配

C中的数组下标和指针算法给出了不同的结果

在C中打印指针本身

C语言中的指针和多维数组

未为同一文件中的函数执行DirectFunctionCall

GCC认为这是一个VLA是对的吗?