C结构初始化的语法问题

CB123 2009-11-16 11:00:42
TCtrlInfo Ctrls[]=
{
[0]={.wnd =0,
.CtrlStyle=WS_CHILD | WS_VISIBLE |BS_PUSHBUTTON,
.Caption=TEXT("PUSHBUTTON"),
.Left=20,
.Top=20,
.Width=90,
.Height=30,
.CtrlId=1,
.TabOrder=0,
},
[1]={.wnd =0,
.CtrlStyle=WS_CHILD | WS_VISIBLE | BS_CHECKBOX,
.Caption=TEXT("CHECKBOX"),
.Left=0,
.Top=55,
.Width=90,
.Height=30,
.CtrlId=2,
.TabOrder=1,
}
}

这个是模仿了linux中C的初始化语法。但在visual c++6.0中无法编译。
请问有什么办法,
我想显示 成员名称的,这样以后添加数据不容易出错的。




...全文
197 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
飛雪一刀 2009-11-17
  • 打赏
  • 举报
回复
晕,VC6.0里这也可以啊?
yyunffu 2009-11-17
  • 打赏
  • 举报
回复
这个是GCC扩展,VS下不支持。
baitxgt 2009-11-17
  • 打赏
  • 举报
回复
你应该改个编译器看看能不能运行!
ChRedfield 2009-11-17
  • 打赏
  • 举报
回复
长见识了。
云梦谭 2009-11-17
  • 打赏
  • 举报
回复
GCC的扩展。
avalon 2009-11-16
  • 打赏
  • 举报
回复
汗。。难怪。。。看得一头雾水
baihacker 2009-11-16
  • 打赏
  • 举报
回复
c99
6.7.8 Initialization
Syntax
1 initializer:
assignment-expression
{ initializer-list }
{ initializer-list , }
initializer-list:
designationopt initializer
initializer-list , designationopt initializer
designation:
designator-list =
designator-list:
designator
designator-list designator
designator:
[ constant-expression ]
. identifier

其中一个和楼上的情况类似的例子
35 EXAMPLE 11 Designators can be used to provide explicit initialization when unadorned initializer lists
might be misunderstood:
struct { int a[3], b; } w[] =
{ [0].a = {1}, [1].a[0] = 2 };
  • 打赏
  • 举报
回复
晕,没这样用过。
TurboC256 2009-11-16
  • 打赏
  • 举报
回复
很变态的写法
jackyjkchen 2009-11-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 proteas 的回复:]
我在 C99 的标准中也没见到你那样初始化的。
我再查查。
长见识了。
i[/Quote]
这不是C99标准,是gcc方言或者说linux方言,linux 1.x版的源码就有这种语法
Proteas 2009-11-16
  • 打赏
  • 举报
回复
我在 C99 的标准中也没见到你那样初始化的。
我再查查。
长见识了。
jackyjkchen 2009-11-16
  • 打赏
  • 举报
回复
这种语法是gcc才支持的,别说VC6了,VS2010都没法编译通过;

VS中结构体初始化只能使用定义对象+单个值分别赋值的方式。

VC从2003以后的理念就是尽量减少编译器的变化,因为从够用的角度来说,C89和C++98能胜任一切应用了。

69,368

社区成员

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

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