[51单片机] Keil C51下的结构体嵌套赋值问题,结构体元素还是结构体名?

[复制链接]
 楼主| soulmist 发表于 2016-12-15 09:12 | 显示全部楼层 |阅读模式
我用两个简单的结构体来表示下这个问题。
  1. typedef struct _inner_ {
  2.             int c;
  3.             int d;
  4. }inner;
  5. typedef struct  _external_ {
  6.             int a;
  7.             inner what;
  8. }external;
  9. //然后初始化
  10. inner strb = { 12, 34};
  11. external stra = {1,{ 12, 34}}; //这样子编译不报错   ①
  12. //external stra = {1,strb};//这样子报错  error C215: illegal type conversion ②
我使用gcc这样实验的时候可以使用第二种方案。请问一下是不是Keil C不支持这种方式呢? ANSI标准应该来说是可以使用同样类型的结构体名直接给对应的结构体赋值的呀。

 楼主| soulmist 发表于 2016-12-15 09:46 | 显示全部楼层
还是我自己顶一顶吧!
冰零分子 发表于 2016-12-15 10:20 | 显示全部楼层
集合的初始化需要使用{}
不在初始化里使用就可以了
这样:
external stra;
stra.what = strb;
 楼主| soulmist 发表于 2016-12-16 09:33 | 显示全部楼层
冰零分子 发表于 2016-12-15 10:20
集合的初始化需要使用{}
不在初始化里使用就可以了
这样:

谢谢你的解答,好像gcc中可以这么干,这是gcc的特性么?
冰零分子 发表于 2016-12-16 11:28 | 显示全部楼层
soulmist 发表于 2016-12-16 09:33
谢谢你的解答,好像gcc中可以这么干,这是gcc的特性么?

我试了下gcc同样报错了


还是走最保险的路线把,怎么定义都无所谓,精力不应该花在这上面

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| soulmist 发表于 2016-12-19 09:05 | 显示全部楼层
本帖最后由 soulmist 于 2016-12-19 09:07 编辑
冰零分子 发表于 2016-12-16 11:28
我试了下gcc同样报错了

我的版本gcc (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609
我的编译通过。
我的怎么可以啊?


不是纠结这个问题, 只是有点好奇。。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
冰零分子 发表于 2016-12-19 09:51 | 显示全部楼层
你已经有答案了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

122

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部

4

主题

122

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部