2010-07-16 79 views
1

我對編程「更大」的應用程序很新穎。我現在用Visual C++ 2010編寫了幾千行代碼的命令行應用程序,它編譯並正常工作。大多數代碼是C兼容的(我認爲),但是,我發現在這裏和那裏使用一些C++構造很有用。例如,有時我使用new/delete而不是malloc/free來調用構造函數,或者使用std :: vector或std :: set來方便使用。我將所有的代碼放在了25個.h文件中,除了int main(),它現在是一個.cpp文件。C/C++應用程序的新手設計注意事項

我的具體問題是:

  • 我猜我所有的代碼被編譯爲C++代碼。使代碼的某些部分真正符合C標準是否有意義?我可以讓Visual Studio將它編譯爲C嗎?對於程序的大部分來說,使它們符合C標準(例如,用malloc和初始化函數等替換new)對於某些部分更加困難(轉換std :: vector)會非常簡單。或者只有一切都是C纔有意義?有什麼好處?或者,將所有東西都轉換爲C++是否有意義?例如,使用new代替malloc和std :: string而不是char *。

  • 我猜它並不打算在.h文件中包含所有代碼。我應該如何將我的代碼放入文件中?除了少數幾個,我沒有很大的班級。我的大部分代碼都是程序和函數。

我的兩個主要問題是效率和體面的編程標準。可移植性現在不是問題。

非常感謝!

+1

聽起來你沒有理由使用'malloc'和'free',而不是熟悉。我建議你熟悉C++的做事方式。使用'new'和'delete',不要猶豫,使用'vectors'等。 – 2010-07-16 19:14:09

+2

不要把所有的代碼放在H文件中。這在更大的應用程序中將無法正常工作。學會將聲明與定義分開。 – zvone 2010-07-16 19:28:37

+0

你的指導是有幫助的。 @zvonimir:我的大部分代碼都是過程和函數......我應該爲函數聲明創建一個.h文件嗎? – 2010-07-16 19:37:24

回答

2

IMO,沒有必要爲「C」符合在2010年就使用C++和它的所有優點(STL,升壓,所有的爵士樂......)

據我所知,將代碼中的頭文件是不正常的做法,通常代碼會放在實現文件(.c,.cpp,...)中。

將代碼放入C/CPP文件(而不是頭文件)可讓您優化編譯時依賴關係(前向聲明,PIMPL,...),並限制您不希望的非公共數據的可見性。 「一些代碼可以看到。

通過減少處理複雜結構和算法時可能會發生的潛在錯誤,使用標準庫將有助於長期運行代碼的穩定性,可讀性和維護性(例如,處理std ::矢量比陣列和的std :: string不是char *)

M.

0

如果你編譯的文件是有一個「C」延伸。如果它被稱爲「CPP」它會它會被編譯爲C.編譯爲C++。

如果想要使用C++功能,我建議使所有的C++,它使生活更簡單。 C++看起來非常像C,除非使用C++特性,否則不會花費任何費用。

1

就.h/.c/.cpp文件而言,接口放在頭文件中,而編譯的東西放在.c/cpp文件中。

所以,如果你有一個模塊來計算小部件,你會把calculate_widget函數原型放在.h文件中,而代碼實際上是在.c文件中完成的。任何其他模塊,想要計算部件#include s widgetcalc.h並調用calculate_widgets。任何未被外部模塊調用的代碼都可以在靜態函數中聲明,這有助於優化並保持名稱空間不發生衝突。

作爲一般規則,如果一行代碼編譯爲某些數量的處理器指令,則它不屬於.h文件。

相關問題