簡體   English   中英

Visual C ++編譯器是否優化未定義的宏塊?

[英]Does the Visual C++ compiler optimize out undefined macro blocks?

以下面的代碼為例:

#ifdef THIS_IS_NOT_DEFINED
//lots of code here...
#endif

假設“大量代碼”可能會將兆字節添加到生成的可執行文件中。 如果確實未定義THIS_IS_NOT_DEFINED,那么編譯器是否仍將所有包含的代碼寫入.exe? 大多數編譯器是否遵循類似的步驟?

C預處理器處理#ifdef。 如果未定義,則編譯器本身甚至看不到代碼,因此它無法進入.exe。

C ++編譯可在多個階段進行。 首先,通過擴展#include#include #define等等對代碼進行預處理。這在文本級別起作用,等效於實際修改源代碼。

在這種情況下,編譯器將從預處理器#ifdef塊中優化代碼,因為在預處理器運行時,它將代碼從源文件中拼接出來。 換句話說,實際進行編譯和代碼生成的編譯器部分將根本看不到代碼的那部分。 好像它不存在。

希望這可以幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM