一个新的写法 这样可以吗
typedef struct _Max
{
int is_first;
int max;
}Max_int;
Max_int max_int = {.is_first = 1, 0}; //这样写是什么意思??我知道这个可以运行,结构体还可以这样实现吗?
[解决办法]
你这个应该是特殊编译器吧?
一般编译器不会通过的。。。
如果你这个可以运行,不能说是C语言支持这种赋值方法,只能说你这个编译器支持这种赋值方式
另外,如果是GCC编译器,支持这种初始化:
Max_int max_int = { max:2, /*is_first:1*/ };
表示只给max初始化为2,is_first还是0,
去掉注释的话那必然会初始化为1
[解决办法]
struct初始化的一种,不常见
[解决办法]
把结构体的is_first域赋值为1,后续的赋值接着它指向下一个域。
[解决办法]
是可以这样写,C primer中就有讲解。
.is_first = 1这种写法是有的时候,你只想初始化结构体中某些变量时用。
如果你写Max_int max_int = {.is_first = 1};也可以的,这样你就只初始化了is_first这个变量。
[解决办法]
楼主快晒下你的编译器吧?是不是什么VC2012?
[解决办法]
还没见过,试了下vc6不支持
[解决办法]
这个是C99 标准支持的初始化方法 GCC已经支持 VC可能还没
[解决办法]
我没有这样使用过
[解决办法]
这是 C99 加入的新功能, 不光初始化, 还可以进行赋值:
struct X { int x, y; };
int main()
{
struct X x;
int* p;
x = (struct X){ .x = 10, .y = 20};
p = (int []){10, 20, 30, [5] = 40 };
}
[解决办法]
C99的……
[解决办法]
开始的时候是gcc的扩展(所以Linux里面经常看见这样的代码),现在已经成为了C99标准的一部分。
[解决办法]
扔掉 微软的编译器吧。
Visual Studio 只能是个 源码编辑器
微软没打算 支持C99.
所以,使用 GCC 或者 Intel编译器吧
[解决办法]
只有在初始化的时候,才能这样赋值。