当前位置:  开发笔记 > 编程语言 > 正文

与类型同名的变量 - 哪个编译器是对的?

如何解决《与类型同名的变量-哪个编译器是对的?》经验,为你挑选了1个好方法。

在这段代码中:

typedef int foo;

struct S
{
  foo foo;
};

int main() {}

所有版本的clang -std=c++14接受此代码,但所有版本的g++ -std=c++14报告:

5 : error: declaration of 'foo S::foo' [-fpermissive]
foo foo;
^
1 : error: changes meaning of 'foo' from 'typedef int foo' [-fpermissive]

代码是否正确?



1> Embedded C..:

代码错了.typedef是现有类型的新名称.因此,您无法创建类型名称foo foo;等于的变量int int.

g++ -std=c++14 是正确的.

也请参考这个问题

推荐阅读
ifx0448363
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有