请教这样对结构体初始化为什么会出错

请问这样对结构体初始化为什么会出错?
请教这样对结构体初始化为什么会出错请教这样对结构体初始化为什么会出错
------解决思路----------------------
引用:
Quote: 引用:

Quote: 引用:

编译器不是已经说了吗?语法不正确。
1, struct all a = { .name = "helo" } 中,成员操作符 "."
2, 还是这一句,花括号对立面为什么写 name="hello" 呢? 按照c++的语法规则,这里的name 只能去两个地方找声明,花括号内和全局作用域。显然都是找不到的。 

再细细读读基本语法吧。

既然楼主问的是,错在哪,我就假设你已经知道正确的写法了。其实这条语句与其说是初始化,不如说是赋值。 c++环境的话,初始化最好用构造函数。

还有一个问题,a被分配以后,系统申请了10个byte的内存(即a.name ) 指向的内存,楼主研究一下你把常量字符串的地址赋给a.name以后,这些内存怎么办 ? 


囧……还是你自己好好读读语法吧。
从C99开始,可以使用指示器 .name = "hello",这没有问题。
只是楼主的编译器太旧罢了。

g++  4.4.5 20110214 (Red Hat 4.4.5-6)
Copyright (C) 2010 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
不算旧啊,可能是和微软诀别时间长了? 


微软的编译器对C的支持就不要提了。
现在的GCC版本是5.2.1。
我现在用台式机,只有笔记本上有Linux和gcc
只好用MinGW,而且特别旧,将就看吧:
请教这样对结构体初始化为什么会出错

------解决思路----------------------
lz又来问, 不是说VS2015支持么, 这是C标准, 不是C++标准