为什么会出错:重新定义;y0 以前的定义是“函数”?

And*_*w.M 0 c++ compiler-errors

代码中唯一写的是:

#include <iostream>
using namespace std;


int x0, y0;
Run Code Online (Sandbox Code Playgroud)

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

Pau*_*ers 6

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

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

然后扫描:

在严格的 ISO C 模式(-ansi、-std=c90、-std=c99 或 -std=c11)之外,函数 ... y0 ... 可以作为内置函数处理...

所以,tl;dr,使用不同的名称。

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

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

所以,下次 OP,这样你就不会被否决(虽然我没有 - 这次),请:

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

谢谢。