Sco*_*ott 16 c struct initialization constants
在C中完成以下操作的最佳方法是什么?
#include <stdio.h>
struct A
{
int x;
};
struct A createA(int x)
{
struct A a;
a.x = x;
return a;
}
struct A a = createA(42);
int main(int argc, char** argv)
{
printf("%d\n", a.x);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
当我尝试编译上面的代码时,编译器报告以下错误:
"初始化元素不是常数"
糟糕的是这一行:
struct A a = createA(42);
Run Code Online (Sandbox Code Playgroud)
有人可以解释什么是错的吗?我不是很有经验C.谢谢!
nat*_*ose 18
struct A a = { .x = 42 };
Run Code Online (Sandbox Code Playgroud)
更多会员:
struct Y {
int r;
int s;
int t;
};
struct Y y = { .r = 1, .s = 2, .t = 3 };
Run Code Online (Sandbox Code Playgroud)
你也可以这样做
struct Y y = { 1, 2, 3 };
Run Code Online (Sandbox Code Playgroud)
同样适用于工会,您不必包含所有成员,甚至不必按正确的顺序排列.
Bjo*_*rnD 14
为什么不使用静态初始化?
struct A a = { 42 };
Run Code Online (Sandbox Code Playgroud)