extern,static,頭文件

basic.cpp


basic.cpp

main.cpp


main.cpp

1.extern

extern關(guān)鍵字表示這個標(biāo)識符具有External Linkage。具有External Linkage指的是:如果把main.cpp和basic.cpp鏈接在一起,如果add在main.cpp和basic.cpp中都有聲明(在basic.cpp中的聲明同時也是定義),那么這些聲明指的是同一個函數(shù),鏈接之后是同一個GLOBAL符號,代表同一個地址。函數(shù)聲明中的extern也可以省略不寫,不寫extern的函數(shù)聲明也表示這個函數(shù)具有External Linkage。

2.static

mul函數(shù)只具有Internal Linkage,只有在basic.cpp中多次聲明才表示同一個函數(shù),而在main.c中聲明就不表示它了。如果把basic.cpp編譯成目標(biāo)文件,函數(shù)名mul在其中是一個LOCAL的符號,不參與鏈接過程,所以在鏈接時,main.cpp中用到一個External Linkage的mul函數(shù),鏈接器卻找不到它的定義在哪兒,無法確定它的地址,也就無法做符號解析,只好報錯。

凡是被多次聲明的變量或函數(shù),必須有且只有一個是定義,如果有多個定義,或者一個定義都沒有,鏈接器就無法完成鏈接,可以有多次聲明。

3.include 頭文件

如果在其他模塊也需要使用add這個函數(shù),都要寫函數(shù)聲明也是很麻煩的??梢宰约簩懸粋€頭文件basic.h,然后在需要add這個函數(shù)的模塊里加入#include “basic.h”,就無需再寫函數(shù)聲明。

basic.h
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1 原理 1.1 首先,關(guān)于聲明和定義的區(qū)別。 這種寫法(函數(shù)原型后加;號表示結(jié)束的寫法)只能叫函數(shù)聲明而不能叫函...
    Pitfalls閱讀 6,827評論 2 12
  • 翻譯自:http://llvm.org/docs/LangRef.html#######重啟翻譯 摘要 這篇文檔是...
    呆萌院長閱讀 9,623評論 5 4
  • http://blog.csdn.net/u013059266/article/details/46998703 ...
    狼之獨步閱讀 877評論 0 1
  • 引言 C++保留了一部分過程式語言的特點,因而它可以定義不屬于任何類的全局變量和函數(shù)。但是,C++畢竟是一種面向?qū)?..
    期門閱讀 946評論 1 1
  • 當(dāng)你淡然,生活也就隨之淡然,這種淡然不是說沒有追求,不上進,而是一種面對生活的態(tài)度,不卑、不亢、不急躁,面對一...
    晴雨序列閱讀 266評論 0 0

友情鏈接更多精彩內(nèi)容