c++ - 为什么错误:重新定义;y0 之前的定义是“功能”?
问题描述
代码中唯一写的是:
#include <iostream>
using namespace std;
int x0, y0;
当我编译时它给了我一个错误:'y0': redefinition; 以前的定义是“功能”</p>
解决方案
这似乎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,这样你就不会被否决(虽然我没有 - 这一次),请:
- 在您的问题中包含错误消息的全文(我的意思是真的,为什么不呢?)
- 告诉我们您正在使用哪个编译器(品牌和版本)
谢谢。
推荐阅读
- firebase - Flutter Firebase not returning correct queried documents
- javascript - Why is there no logical negation for atomic operations?
- css - Can we add custom className prop to "Col" or "Row" components in react bootstrap?
- list - 如何访问在映射的键值对中作为值存在的列表元素,其中映射存在于 Dart 的另一个列表中
- stripe-payments - Localizing Stripe Payment on Sylius
- vue.js - vuejs - Create detached css file from apps.css
- c# - 如何在一个命令中增加大于 1 的整数值?
- c++ - 如何在 C++ 中访问对的集合
- java - 杰克逊中用于枚举的自定义 xml 反序列化器
- java - 在同一方法中同步多个块