|
|
#ifdef __cplusplus
extern "C" {
#endif
//一段代碼
#ifdef __cplusplus
}
#endif
如果你不想理解這段代碼的意義,那么請(qǐng)你記住:在你的代碼不知道是被c調(diào)用還是c++調(diào)用時(shí),請(qǐng)?zhí)砑哟硕未a。
下面詳細(xì)說(shuō)明此段代碼的意義:
__cplusplus是c++定義的宏,如果是c++調(diào)用的話,extern c聲明會(huì)有效。如果時(shí)c調(diào)用的話,那么,extern c聲明無(wú)效。
要明白為何使用extern "C",還得從cpp中對(duì)函數(shù)的重載處理開(kāi)始說(shuō)起。在c++中,為了支持重載機(jī)制,在編譯生成的匯編碼中,要對(duì)函數(shù)的名字進(jìn)行一些處理,加入比如函數(shù)的返 回類型等等.而在C中,只是簡(jiǎn)單的函數(shù)名字而已,不會(huì)加入其他的信息.也就是說(shuō):C++和C對(duì)產(chǎn)生的函數(shù)名字的處理是不一樣的. 目的就是主要實(shí)現(xiàn)C與C++的相互調(diào)用問(wèn)題。
|
|