免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3587 | 回复: 10
打印 上一主题 下一主题

[C++] 这是标准的c++写法吗 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-09-25 21:18 |只看该作者 |倒序浏览
看看下面的代码:


  1. class A{
  2.   public:
  3.     void m1();
  4.     void A::m2();   //主要是这句
  5. };
复制代码


m2的定义在以前的g++中能编译通过,但在g++4.1会报错,但看了g++4.1的文档中没有相关说明,是g++的bug还是c++有了新的规定,有没有选项可以兼容以前的格式

论坛徽章:
0
2 [报告]
发表于 2006-09-25 21:53 |只看该作者
C++的新标准要09年才出来,所以这当然不是什么C++的新规定

论坛徽章:
0
3 [报告]
发表于 2006-09-25 21:57 |只看该作者
推测为新规定

论坛徽章:
0
4 [报告]
发表于 2006-09-25 22:03 |只看该作者
03版的新规定?

论坛徽章:
0
5 [报告]
发表于 2006-09-25 22:18 |只看该作者
原帖由 langue 于 2006-9-25 21:57 发表
推测为新规定


cc1plus的新规定

论坛徽章:
0
6 [报告]
发表于 2006-09-26 00:24 |只看该作者
标准C++哪有这种写法啊?
能编译只能说明以前的g++不标准!!

类的内部声明成员函数不用类名限制。

论坛徽章:
0
7 [报告]
发表于 2006-09-26 01:49 |只看该作者
你看看编译器的提示:

error: ISO C++ forbids declaration of 'm2' with no type

已经说明了: 标准C++ 不允许这样声明,以往的编译器,只是给出警告,没有报错

论坛徽章:
0
8 [报告]
发表于 2006-09-26 08:59 |只看该作者
对类中定义的成员如果再用类名修饰的话是错误的,不被 C++ 标准所允许(无论新旧标准)。

包括 GCC 等在内的一些编译器长期以来一直默认和允许这种多余的修饰。然而,如果用旧的 g++ 编译的时候加上 -pedantic 编译选项会显示出这个错误。因此,这只是编译器的扩展行为,不是标准允许的行为。

GCC 4.1 向 C++ 标准做了进一步的靠拢,过去的一些不符合标准但又被默认的行为现在以错误的形式提示出现。这可能会造成原来的一些不严格符合 C++ 标准的程序不能编译的现象。解决的方法:或者使用以前版本的编译器,或者修改程序中的错误。

论坛徽章:
0
9 [报告]
发表于 2006-09-26 09:40 |只看该作者
原帖由 whyglinux 于 2006-9-26 08:59 发表
对类中定义的成员如果再用类名修饰的话是错误的,不被 C++ 标准所允许(无论新旧标准)。

包括 GCC 等在内的一些编译器长期以来一直默认和允许这种多余的修饰。然而,如果用旧的 g++ 编译的时候加上 -pedantic ...


很好地解释,谢谢。我现在是换用g++4.0来编译。

论坛徽章:
0
10 [报告]
发表于 2006-09-26 17:48 |只看该作者
呵呵,刚好我今天用g++-4.1编译prozilla 2.04就遇到了这个问题,改了源码才编译通过。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP