C++编译报错:||error: ld returned 1 exit status|的解决
作者:doubleslow;
这篇文章主要介绍了C++编译报错:||error: ld returned 1 exit status|的解决方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
C++编译报错||error: ld returned 1 exit status|
这个问题我遇到过三次了,每次好像原因都不一样,在网上看到很多博客都记录了这个问题,每人原因也都不同,所以可以有多种原因都引发这个错误。
但我不懂ld returned 1 exit status|到底是啥意思,所以不能解读这些问题的相通的共同毛病,但我觉得这肯定是什么比较致命的错误,即找不到病根,那就只好从现在开始专门记录一下各种症状
在头文件中定义变量
今天脑子一昏,竟做出此举,我很惭愧。
我把外部变量的定义竟写到了头文件中, 于是报错。
然而外部变量可以放在任何源代码文件中,只要写在所有函数外面就行,就是不能放在头文件中。。。
我是个人才
错误代码:
//coordin.h #ifndef COORDIN_H_ #define COORDIN_H_ double warming = 0.3;//外部变量/全局变量的定义声明,应删掉这句代码 void update(double); void local(); #endif // COORDIN_H_
//main.cpp #include <iostream> #include "coordin.h" extern double warming;//应改为外部变量/全局变量的定义声明:double warming = 0.3; int main() { std::cout << "global warming is " << warming << '\n'; update(0.1);//更改全局变量的值 std::cout << "Now global warming is " << warming << '\n'; local();//同名局部变量隐藏全局变量 return 0; }
//file1.cpp #include <iostream> #include "coordin.h" extern double warming;//引用声明 void update(double x) { warming += x; } void local() { double warming = 1.2;//隐藏全局变量warming std::cout << "local warming is " << warming << '\n'; std::cout << "But global warming is " << ::warming << '\n';//::是作用域解析运算符,表示使用变量的全局版本 }
输出
global warming is 0.3
Now global warming is 0.4
local warming is 1.2
But global warming is 0.4
头文件只能有下面这些东西,不要企图在里面定义任何变量。。。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。