簡體   English   中英

預處理器指令 #if 和普通 if 之間的區別

[英]Difference between preprocessor directive #if and normal if

什么是預處理器指令之間的差異#if正常ifC? 我是C 的新手。

前面帶有# 的語句稱為預處理器指令。 在實際編譯代碼之前,它們由解析器處理。 從第一次使用谷歌搜索命中(http://www.cplusplus.com/doc/tutorial/preprocessor/):

預處理器指令是我們程序代碼中包含的行,它們不是程序語句而是預處理器的指令。 這些行總是以井號 (#) 開頭。 預處理器在代碼的實際編譯開始之前執行,因此預處理器在語句生成任何代碼之前消化所有這些指令。

所以 #if 將在編譯時決定,“正常” if 將在運行時決定。 換句話說,

#define TEST 1
#if TEST
printf("%d", TEST);
#endif

將編譯為

printf("%d", 1);

如果你寫了

#define TEST 1
if(TEST)
printf("%d", TEST);

該程序實際上會編譯為

if(1)
printf("%d", 1);

預處理器if允許您在將代碼發送到編譯器之前對其進行條件處理。 通常用於阻止標題代碼被添加兩次。

編輯,你的意思是 C++,因為它被標記為這樣? http://www.learncpp.com/cpp-tutorial/110-a-first-look-at-the-preprocessor/

預處理器 if 由預處理器作為正在編譯的程序的第一步處理。 正常的 if 在程序執行時在運行時處理。 預處理器指令用於啟用條件編譯,根據不同定義的預處理器常量/表達式使用不同的代碼部分。 正常的 if 用於控制正在執行的程序中的流程。

暫無
暫無

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

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