为什么出错:重新定义; y0以前的定义是“功能”?

时间:2018-07-06 14:05:41

标签: c++ compiler-errors

代码中唯一写的是:

#include <iostream>
using namespace std;


int x0, y0;

当我编译时,它给我一个错误:“ y0”:重新定义;以前的定义是“功能”

1 个答案:

答案 0 :(得分:4)

y0似乎是gcc(可能还有其他一些编译器)中的内置函数,请参阅:

https://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html

然后扫描以下内容:

  

在严格的ISO C模式下(-ansi,-std = c90,-std = c99或-std = c11),功能... y0 ...可以按以下方式处理:在功能中...

因此, tl; dr ,请使用其他名称。

您可以看到gcc生成here的有用错误消息,尽管至少在gcc 8.1中这只是警告:

  

prog.cc:4:9:警告:内置函数y0声明为非功能[-Wbuiltin-declaration-mismatch]    int x0,y0;

因此,对于下一次OP,以便您不会被否决(尽管这次我没有),请:

  • 在您的问题中包含错误消息的全文(我的意思是,为什么呢?)
  • 告诉我们您正在使用哪个编译器(版本和版本)

谢谢。