首页 > 解决方案 > 为什么错误:重新定义;y0 之前的定义是“功能”?

问题描述

代码中唯一写的是:

#include <iostream>
using namespace std;


int x0, y0;

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

标签: c++compiler-errors

解决方案


这似乎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,这样你就不会被否决(虽然我没有 - 这一次),请:

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

谢谢。


推荐阅读