close

extern "C"

1. 僅適用於 C++ compiler, 若再C compiler使用會出現error

2. 出現在function 宣告前面, 用來告知 C++ compiler, 將此function的symbol維持C style的形式

 

通常適用於當原始碼是C++與C混合的時候,用C++ compile到C code的時候

由於C++支援overloading, 所以為了支援overloading

會預設將原本function的function name轉譯成特別的名稱

EX: swap(int, int), swap(double, double)

這兩個function經過 C++ compiler所轉出的symbol格式會類似

_swap_int_int與_swap_double_double

以用來區分overloading後不同的function

因此就算function沒有被overloading, C++ compiler也會預設將function轉譯成

帶有參數型別的名稱

如此會導致其他C code若利用extern的方法去reference function時出現link error

此時就需要extern "C" 告訴C++ compiler將此function做原型的轉譯

意即保持swap(int, int)

arrow
arrow
    全站熱搜

    kaogold3 發表在 痞客邦 留言(0) 人氣()