1. 程式人生 > >STM32——C與C++混合開發

STM32——C與C++混合開發

keil中支援混合編譯C和C++程式。

在混合編譯時,需要注意以下幾點:

1、C副檔名必須為.C, C++副檔名必須為.CPP, 標頭檔案副檔名必須為.CPP。 如果原始檔的副檔名使用錯誤,會導致編譯出錯。

注:字尾名非必須為.CPP字尾名,也可以.C,但要將檔案屬性選擇為C++檔案。
這裡寫圖片描述
2、C語言的標頭檔案,需要加上如下條件編譯及限制程式碼:

#ifdef  __cplusplus
    extern "C" {
#endif
//原本的標頭檔案內容。 
#ifdef  __cplusplus
}  
#endif

其功能為,當使用c++編譯器編譯時,會新增extern “C” {}限制。 這樣才可以使C語言的函式宣告被C++正確識別。

3、所有C++檔案中需要被C呼叫的函式,在定義和宣告時都需要加上

extern "C"
可以是單獨的函式,比如
extern "C" void func_cpp_for_c(void)
{
    //...
}

也可以是程式段,比如

extern "C"{
    void func1()
    {
    }
    void func2()
    {
    }
}
extern "C"{
    void func1()
    {
    }
    void func2()
    {
    }
}

4、編譯選項中,C99編譯選項需要去掉。如圖:
這裡寫圖片描述