1. 程式人生 > >extern "C"的功能和用法研究

extern "C"的功能和用法研究

                                         

上述程式碼段中:__cplusplus是一個C++規範規定的預定義巨集;現代C++編譯器都預先定義了它,而所有的C語言編譯器則不會;

【注】:按照規範__cplusplus的值應該等於199711L,然而並不是所有的編譯器都照此規範,比如g++編譯器下__cplusplus的值為1。

上述程式碼段,如果再C編譯器下,內容等價如下:

因為C語言編譯器沒有定義_cplusplus;

                                          

 

1. extern "C"功能:為了能夠正確的在C++程式碼中呼叫C語言的程式碼;

在程式中加上extern "C"後,相當於告訴編譯器這部分程式碼是C語言寫的,因此要按照C語言進行編譯,而不是C++;

2. 哪些情況下使用extern "C":

(1)C++程式碼中呼叫C語言程式碼;

(2)在C++中的標頭檔案中使用;

(3)在多個人協同開發時,可能有人擅長C語言,而有人擅長C++;

3. C++語言允許函式過載;但C語言是一門單一名字空間的語言,不允許函式過載;

為了能在C++程式裡呼叫C語言程式,C++引入了連結規範,格式:extern "language string";

如下,在C++程式中呼叫C程式:

                                 

參考文章:

1. 非常詳細 https://www.cnblogs.com/TenosDoIt/p/3163621.html