1. 程式人生 > >More Effective C++之同一程式使用C++和C

More Effective C++之同一程式使用C++和C

長久以來,我們不得不為在同一程式中既要使用C++寫的元件又使用C寫的元件而擔心,同樣的問題,當我們在一個C程式裡使用不同編譯器產生的obj檔案也會困擾我們。除非不同的編譯器與語言特性達成一致。對於混合使用C和C++的程式來說,和全部用C或者C++一樣都存在這個問題。所以在使用前,必須保持相容。

解決完這個問題,我們必須有4個問題需要考慮:名稱改編,靜態變數初始化,動態記憶體分配,資料結構相容性。

名稱改編:每個C++編譯器都賦予每個函式獨一無二的名字

靜態變數的初始化:對於C++來說,在main函式執行前和執行後都有可能大量的程式碼被執行。尤其是,靜態的類物件和定義在全域性範圍的,某個名稱空間的或檔案範圍內的類物件的建構函式通常在main被執行前就被呼叫

動態記憶體的分配:通用規則C++使用new和delete,C使用malloc和free

資料結構的相容性:如果某個結構的定義既可以在C++進行編譯,又可以在C進行編譯,那麼在C和C++之間互相傳遞這樣的資料結構是安全的。