一个新的写法 这样可以吗

jdwq33 2012-08-03 10:26:56
typedef struct _Max
{
int is_first;
int max;
}Max_int;

Max_int max_int = {.is_first = 1, 0}; //这样写是什么意思??我知道这个可以运行,结构体还可以这样实现吗?
...全文
159 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
ForestDB 2012-08-03
  • 打赏
  • 举报
回复
开始的时候是gcc的扩展(所以Linux里面经常看见这样的代码),现在已经成为了C99标准的一部分。
ProgrammingRing 2012-08-03
  • 打赏
  • 举报
回复
C99的……
www_adintr_com 2012-08-03
  • 打赏
  • 举报
回复
这是 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 };
}
ies_sweet 2012-08-03
  • 打赏
  • 举报
回复
我没有这样使用过
wshn13 2012-08-03
  • 打赏
  • 举报
回复
这个是C99 标准支持的初始化方法 GCC已经支持 VC可能还没
lylm 2012-08-03
  • 打赏
  • 举报
回复
还没见过,试了下vc6不支持
zjs100901 2012-08-03
  • 打赏
  • 举报
回复
楼主快晒下你的编译器吧?是不是什么VC2012?
nuistchn 2012-08-03
  • 打赏
  • 举报
回复
是可以这样写,C primer中就有讲解。
.is_first = 1这种写法是有的时候,你只想初始化结构体中某些变量时用。
如果你写Max_int max_int = {.is_first = 1};也可以的,这样你就只初始化了is_first这个变量。
图灵狗 2012-08-03
  • 打赏
  • 举报
回复
把结构体的is_first域赋值为1,后续的赋值接着它指向下一个域。
MC_LoveX 2012-08-03
  • 打赏
  • 举报
回复
struct初始化的一种,不常见
lx3275852 2012-08-03
  • 打赏
  • 举报
回复
你这个应该是特殊编译器吧?
一般编译器不会通过的。。。

如果你这个可以运行,不能说是C语言支持这种赋值方法,只能说你这个编译器支持这种赋值方式

另外,如果是GCC编译器,支持这种初始化:
Max_int max_int = { max:2, /*is_first:1*/ };
表示只给max初始化为2,is_first还是0,
去掉注释的话那必然会初始化为1
夏天__ 2012-08-03
  • 打赏
  • 举报
回复
只有在初始化的时候,才能这样赋值。
CandPointer 2012-08-03
  • 打赏
  • 举报
回复
扔掉 微软的编译器吧。
Visual Studio 只能是个 源码编辑器

微软没打算 支持C99.
所以,使用 GCC 或者 Intel编译器吧
jdwq33 2012-08-03
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
楼主快晒下你的编译器吧?是不是什么VC2012?
[/Quote]这个到忘了 我是用linux下的gcc编译器

69,370

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧