LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 964|回复: 8

gcc4问题

[复制链接]
发表于 2005-6-27 19:45:38 | 显示全部楼层 |阅读模式
在gcc4里,好像强制型类转换的结果不可以作为左值,也就是说:
int a;
(int)a=1;
是编译不通过的。下面的代码也不行:
void *a;
((int *)a)++;
但我发现以前我很多代码里都是这么写的……请问这是不是gcc4的bug?C语言标准里对这种用法有什么规定么?
另外,用vc和gcc3都可以编译成功。g++3不可以,vc把文件名定为.cpp也不可以。
发表于 2005-6-27 20:25:13 | 显示全部楼层
新特性不是 bug
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-6-27 20:45:45 | 显示全部楼层
我不喜欢这个新特征,一点都不好!
回复 支持 反对

使用道具 举报

发表于 2005-6-27 22:35:16 | 显示全部楼层
还没用不过gcc4,不过,这也算新特性?
回复 支持 反对

使用道具 举报

发表于 2005-6-27 23:07:04 | 显示全部楼层
这在3.4中已经是deprecated了,所以在4.0中就disabled了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-6-28 00:25:38 | 显示全部楼层
为什么要deprecated?会引起什么问题么?我很多代码都用到强制指针转换后自加,现在都编译不过!faint。
回复 支持 反对

使用道具 举报

发表于 2005-6-28 08:44:12 | 显示全部楼层
这有什么好处?有没有参数可以关掉这个?
回复 支持 反对

使用道具 举报

发表于 2005-6-28 16:35:13 | 显示全部楼层
gcc4还没有用过的说。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-6-28 22:27:18 | 显示全部楼层
看来gnu是决心要把强制型类转换可作左值这个功能疲掉了,gcc3.4里就已经有warning,4.0就彻底编译不通过,可能是为了兼容c++的原因。可能很多人要改代码了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表