C++編譯報(bào)錯(cuò):||error: ld returned 1 exit status|的解決
C++編譯報(bào)錯(cuò)||error: ld returned 1 exit status|
這個(gè)問(wèn)題我遇到過(guò)三次了,每次好像原因都不一樣,在網(wǎng)上看到很多博客都記錄了這個(gè)問(wèn)題,每人原因也都不同,所以可以有多種原因都引發(fā)這個(gè)錯(cuò)誤。
但我不懂ld returned 1 exit status|到底是啥意思,所以不能解讀這些問(wèn)題的相通的共同毛病,但我覺(jué)得這肯定是什么比較致命的錯(cuò)誤,即找不到病根,那就只好從現(xiàn)在開(kāi)始專門記錄一下各種癥狀
在頭文件中定義變量
今天腦子一昏,竟做出此舉,我很慚愧。
我把外部變量的定義竟寫到了頭文件中, 于是報(bào)錯(cuò)。
然而外部變量可以放在任何源代碼文件中,只要寫在所有函數(shù)外面就行,就是不能放在頭文件中。。。
我是個(gè)人才
錯(cuò)誤代碼:
//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';//::是作用域解析運(yùn)算符,表示使用變量的全局版本 }
輸出
global warming is 0.3
Now global warming is 0.4
local warming is 1.2
But global warming is 0.4
頭文件只能有下面這些東西,不要企圖在里面定義任何變量。。。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
C++?折疊參數(shù)包詳解(悄然增強(qiáng)編程效率)
折疊參數(shù)就是一個(gè)參數(shù)包, 代表是多個(gè)未知,tuple元組就是一個(gè)折疊參數(shù)的使用,這篇文章主要介紹了C++?折疊參數(shù)包悄然增強(qiáng)編程效率,需要的朋友可以參考下2023-05-05C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)中約瑟夫環(huán)問(wèn)題探究
這篇文章主要介紹了C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)中約瑟夫環(huán)問(wèn)題,總的來(lái)說(shuō)這并不是一道難題,那為什么要拿出這道題介紹?拿出這道題真正想要傳達(dá)的是解題的思路,以及不斷優(yōu)化探尋最優(yōu)解的過(guò)程。希望通過(guò)這道題能給你帶來(lái)一種解題優(yōu)化的思路2023-01-01通過(guò)C++程序示例理解設(shè)計(jì)模式中的外觀模式
這篇文章主要介紹了通過(guò)設(shè)計(jì)模式中的外觀模式及相關(guān)的C++程序示例,外觀模式在高層提供了一個(gè)統(tǒng)一的接口實(shí)現(xiàn)一定程度上的解耦,需要的朋友可以參考下2016-03-03解析C++中四種強(qiáng)制類型轉(zhuǎn)換的區(qū)別詳解
本篇文章是對(duì)C++中四種強(qiáng)制類型轉(zhuǎn)換的區(qū)別進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05c++11 符號(hào)修飾與函數(shù)簽名、函數(shù)指針、匿名函數(shù)、仿函數(shù)、std::function與std::bind
這篇文章主要介紹了c++11 符號(hào)修飾與函數(shù)簽名、函數(shù)指針、匿名函數(shù)、仿函數(shù)、std::function與std::bind,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-05-05C語(yǔ)言之結(jié)構(gòu)體(struct)詳解
本文主要介紹C語(yǔ)言 結(jié)構(gòu)體的知識(shí),學(xué)習(xí)C語(yǔ)言肯定需要學(xué)習(xí)結(jié)構(gòu)體,這里詳細(xì)說(shuō)明了結(jié)構(gòu)體并附示例代碼,供大家參考學(xué)習(xí),有需要的小伙伴可以參考下2021-10-10深入探討Linux靜態(tài)庫(kù)與動(dòng)態(tài)庫(kù)的詳解(一看就懂)
本篇文章是對(duì)Linux靜態(tài)庫(kù)與動(dòng)態(tài)庫(kù)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05