#ifdef __cplusplus extern “C” { #endif的作用!
?
解釋:
(1)cpp中對(duì)函數(shù)的重載處理。在c++中,為了支持重載機(jī)制,在編譯生成的匯編碼中,要對(duì)函數(shù)的名字進(jìn)行一些處理,加入比如函數(shù)的返回類型等等.而在C中,只是簡(jiǎn)單的函數(shù)名字而已,不會(huì)加入其他的信息.也就是說(shuō):C++和C對(duì)產(chǎn)生的函數(shù)名字的處理是不一樣的.
(2)C++之父在設(shè)計(jì)C++之時(shí),考慮到當(dāng)時(shí)已經(jīng)存在了大量的C代碼,為了支持原來(lái)的C代碼和已經(jīng)寫(xiě)好C庫(kù),需要在C++中盡可能的支持C,而extern"C"就是其中的一個(gè)策略。因此,為了在C++代碼中調(diào)用用C寫(xiě)成的庫(kù)文件,就需要用extern"C"來(lái)告訴編譯器:這是一個(gè)用C寫(xiě)成的庫(kù)文件,請(qǐng)用C的方式來(lái)鏈接它們。
(3)使用過(guò)程中,會(huì)用到#ifdef __cplusplus ?#endif 對(duì)頭文件進(jìn)行定義聲明,表示的意思是:如果這是一段cpp的代碼,那么加入"extern "C"{" ?和 " }"處理其中的代碼,其中{ }內(nèi)部的代碼是通過(guò)extern"C"進(jìn)行處理,所以在所有的頭文件引用中,如果是CPP代碼文件,就會(huì)自動(dòng)調(diào)用g++進(jìn)行編譯,但是如果是C代碼文件,自動(dòng)調(diào)用gcc進(jìn)行編譯;
?
總結(jié)
以上是生活随笔為你收集整理的#ifdef __cplusplus extern “C” { #endif的作用!的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: ARM汇编:汇编语言跳转指令: JMP、
- 下一篇: ORA-28000: the accou