none
使用 typedef 声明类型,但是碰到与标准不符合的错误提示 RRS feed

  • 问题

  • 编译如下代码:

    typedef int f;
    struct A {
     operator int();
     void g(A a) {
      f(a);
     }
    };

    int _tmain(int argc, _TCHAR* argv[])
    {
     return 0;
    }

    源自C++ISO98标准:[3.4.1.3]中的例子.  f(a)  应翻译成为  int(a),代码符合语法规则.

    但VS2008报错: error C2082: redefinition of formal parameter 'a'

    请问编译器如何分析的 f(a)  ,  这个属于编译器bug么?

    2011年12月7日 5:12

答案

  • 你多试几个编译器就知道了,现在Windows和Linux下都是这样,这是即成标准,非要去扣什么标准序号一点用都没有,据我所知还没有一个编译器完全支持所有标准
    0xBAADF00D

    2011年12月16日 11:11
    版主

全部回复