歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> extern ¨C¨對C++和C混合編譯的支持

extern ¨C¨對C++和C混合編譯的支持

日期:2017/3/1 10:17:11   编辑:Linux編程

C關鍵字extern除了對全局變量和函數的修飾作用外,在C++和C的混合編譯中也承擔著重要角色。初次接觸混合編譯的程序員經常遇到的一個問題就是 在C++環境下使用C函數的時候,常常出現編譯器無法找到C函數定義的鏈接錯誤。其原因就是因為C++語言為了解決函數的多態問題,會將函數名和參數聯合起來生成一個中間的函數名稱(mangled name)。此時對C函數用extern “C”進行鏈接指定,告訴編譯器,按照C語言的命名習慣在庫中查找函數。

經常寫成以下格式:
#ifdef __cplusplus
extern "C"{
#endif
 …
 …
#ifdef __cplusplus
}
#endif

extern "C" 是C++的語法, 在C語言中不能直接引用,否則編譯報錯。

Copyright © Linux教程網 All Rights Reserved