回覆列表
  • 1 # 使用者9020153659432

    首先明確一點,extern "C" 這一句是C++的語法,C編譯器是無法理解的,所以在使用C進行編譯時,這一句是要被跳過的。

    由於C++支援過載,在生成符號表時,使用與C不同的方法,以區別過載。比如

    void fun( int i );

    void fun( float f );

    為了區別兩個fun,可能會生成 fun_int 與 fun_float 兩個函式。這時在C中是無法直接呼叫fun的,只能在C++中呼叫fun。

    但如果用 extern "C" 宣告,比如

    extern "C"

    {

    void fun(int i );

    // void fun(float f );

    }

    這時則按C的語法生成fun的符號,這樣在C中可直接呼叫fun,當然c++也可以用。

    簡單點結論,如果你的所有源程式,全都使用c語言,或者全部都使用c++,可以不用管extern "C"。否則,用c語言寫的部分不需要特別處理,用c++寫的部分也不需要特別處理,但用c++呼叫c寫的函式,這些c寫的函式的宣告部分需要加extern "C"限定。

  • 中秋節和大豐收的關聯?
  • WPS表格excel單元格拖放功能?