C++編譯報錯:||error: ld returned 1 exit status|的解決
C++編譯報錯||error: ld returned 1 exit status|
這個問題我遇到過三次了,每次好像原因都不一樣,在網(wǎng)上看到很多博客都記錄了這個問題,每人原因也都不同,所以可以有多種原因都引發(fā)這個錯誤。
但我不懂ld returned 1 exit status|到底是啥意思,所以不能解讀這些問題的相通的共同毛病,但我覺得這肯定是什么比較致命的錯誤,即找不到病根,那就只好從現(xiàn)在開始專門記錄一下各種癥狀
在頭文件中定義變量
今天腦子一昏,竟做出此舉,我很慚愧。
我把外部變量的定義竟寫到了頭文件中, 于是報錯。
然而外部變量可以放在任何源代碼文件中,只要寫在所有函數(shù)外面就行,就是不能放在頭文件中。。。
我是個人才
錯誤代碼:
//coordin.h #ifndef COORDIN_H_ #define COORDIN_H_ double warming = 0.3;//外部變量/全局變量的定義聲明,應(yīng)刪掉這句代碼 void update(double); void local(); #endif // COORDIN_H_
//main.cpp #include <iostream> #include "coordin.h" extern double warming;//應(yīng)改為外部變量/全局變量的定義聲明: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
頭文件只能有下面這些東西,不要企圖在里面定義任何變量。。。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
C語言數(shù)據(jù)結(jié)構(gòu)中約瑟夫環(huán)問題探究
這篇文章主要介紹了C語言數(shù)據(jù)結(jié)構(gòu)中約瑟夫環(huán)問題,總的來說這并不是一道難題,那為什么要拿出這道題介紹?拿出這道題真正想要傳達(dá)的是解題的思路,以及不斷優(yōu)化探尋最優(yōu)解的過程。希望通過這道題能給你帶來一種解題優(yōu)化的思路2023-01-01解析C++中四種強制類型轉(zhuǎn)換的區(qū)別詳解
本篇文章是對C++中四種強制類型轉(zhuǎn)換的區(qū)別進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05c++11 符號修飾與函數(shù)簽名、函數(shù)指針、匿名函數(shù)、仿函數(shù)、std::function與std::bind
這篇文章主要介紹了c++11 符號修飾與函數(shù)簽名、函數(shù)指針、匿名函數(shù)、仿函數(shù)、std::function與std::bind,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-05-05深入探討Linux靜態(tài)庫與動態(tài)庫的詳解(一看就懂)
本篇文章是對Linux靜態(tài)庫與動態(tài)庫進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05