C++编译报错:||error: ld returned 1 exit status|

水深无声 2023-07-13 08:23 188阅读 0赞

这个问题我遇到过三次了,每次好像原因都不一样,在网上看到很多博客都记录了这个问题,每人原因也都不同,所以可以有多种原因都引发这个错误。但我不懂ld returned 1 exit status|到底是啥意思,所以不能解读这些问题的相通的共同毛病,但我觉得这肯定是什么比较致命的错误,即找不到病根,那就只好从现在开始专门记录一下各种症状

  1. 在头文件中定义变量
    今天脑子一昏,竟做出此举,我很惭愧。我把外部变量的定义竟写到了头文件中, 于是报错。然而外部变量可以放在任何源代码文件中,只要写在所有函数外面就行,就是不能放在头文件中。。。我是个人才

错误代码

  1. //coordin.h
  2. #ifndef COORDIN_H_
  3. #define COORDIN_H_
  4. double warming = 0.3;//外部变量/全局变量的定义声明,应删掉这句代码
  5. void update(double);
  6. void local();
  7. #endif // COORDIN_H_
  8. //main.cpp
  9. #include <iostream>
  10. #include "coordin.h"
  11. extern double warming;//应改为外部变量/全局变量的定义声明:double warming = 0.3;
  12. int main()
  13. {
  14. std::cout << "global warming is " << warming << '\n';
  15. update(0.1);//更改全局变量的值
  16. std::cout << "Now global warming is " << warming << '\n';
  17. local();//同名局部变量隐藏全局变量
  18. return 0;
  19. }
  20. //file1.cpp
  21. #include <iostream>
  22. #include "coordin.h"
  23. extern double warming;//引用声明
  24. void update(double x)
  25. {
  26. warming += x;
  27. }
  28. void local()
  29. {
  30. double warming = 1.2;//隐藏全局变量warming
  31. std::cout << "local warming is " << warming << '\n';
  32. std::cout << "But global warming is " << ::warming << '\n';//::是作用域解析运算符,表示使用变量的全局版本
  33. }

输出

  1. global warming is 0.3
  2. Now global warming is 0.4
  3. local warming is 1.2
  4. But global warming is 0.4

头文件只能有下面这些东西,不要企图在里面定义任何变量。。。
在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,188人围观)

还没有评论,来说两句吧...

相关阅读

    相关 [Error] ld returned 1 exit status

    大家在使用DEV c++编写程序的时候,常常遇到这个问题,翻来覆去解决不掉,但是换一个软件就可以成功运行。就像我今天遇到的这种情况-》o(╥﹏╥)o 如果想要成功解决这个问题