關於Visual Studio的條件編譯

2022-05-17 21:13:16 字數 1250 閱讀 8126

最近把visual studio 2013 rc公升級到了visual studio 2013 rtm,順手查了一下關於軟體版本的知識,了解到通常軟體的正式版比測試版要小一些。原因在於在測試版期間,程式設計師新增了很多的測試用來排查軟體中的bug,這些測試**會被編譯到軟體中,軟體通常較大,而這些測試**對軟體本身而言不是必須的,在正式版,程式設計師會設定編譯引數,是編譯器不編譯測試的**片段,因此正式版的軟體往往比測試版小得多。

那麼如何設定編譯引數呢,下面有兩種方式實現:

第1種方式,將條件編譯寫入**之中,比如:

1 #include 2

#define debug

3#ifdef debug

4#define stdout_beta printf

5#define stdout_rtm //

6#else

7#define stdout_beta //

8#define stdout_rtm printf

9#endif

//debug

1011

12int main(void)13

如果將第2行注釋,則輸出的程式為

不注釋則輸出的程式為:

這樣就能控制編譯器是否將測試**編譯到軟體中了。

第2種方式,修改編譯環境,具體方法如下:

選擇專案-右鍵屬性-配置屬性-c/c++-預處理器

在預處理器定義的那一行新增你的巨集定義。

比如:debud;

點選確定,這樣上述**的第2行#define debug就會由編譯器自動新增了,將第2行注釋掉,重新編譯,執行結果如下:

對比1、2兩種實現方式,往往在實際專案中,模組與模組之間的銜接比較複雜,我們不可能再每乙個檔案前面寫入或者刪除相應的巨集,所以比較流行的做法是使用第2種方式。

visual studio的條件編譯就是這樣,如果你使用過gcc/g++,你可以更加透徹的看到條件編譯的實現機制。

關於Visual Studio除錯時開啟的檔案路徑

如下圖所示是我工程資料夾內部 可以看到該路徑下還有3個資料夾 可能只有兩個,乙個是工程名,乙個是debug 也可能只有乙個,是工程名 一般而言,當你使用下圖所示的按鈕來編譯程式時,我們知道,這是進入除錯狀態,且會在你工程資料夾下產生乙個叫debug的資料夾,在這個資料夾下有可執行程式。那麼,如果你的...

關於Visual Studio 2019的前期詳情

近日,來自微軟公司的 john montgomery 正式宣布,visual studio 2019已進入開發階段。montgomery 表示,之所以選擇在這個時間點公開這個訊息,是因為微軟準備在 github 上公開可見的專案 包括 net 和 roslyn 中提交與新一代 vs 發布相關的內容。...

關於Visual Studio 2019的前期詳情

近日,來自微軟公司的 john montgomery 正式宣布,visual studio 2019已進入開發階段。montgomery 表示,之所以選擇在這個時間點公開這個訊息,是因為微軟準備在 github 上公開可見的專案 包括 net 和 roslyn 中提交與新一代 vs 發布相關的內容。...