條件編譯 if endif ifdef等

2021-07-24 04:47:10 字數 1013 閱讀 6280

最近在看c++專案,發現專案裡新增了好多#if等符號,查了一下,發現,他們作用不小。

所謂的#if等符號,包含#if,#elif,#ifdef,,#else,#ifndef,#endif,,總稱條件編譯。

首先,所謂的條件編譯,是指在我們書寫代**完成之後,編譯之前的預編譯階段發揮作用。大體就是決定是否編譯。

舉個例子,如果決定寫入,就會在對應的exe檔案中包含此**段,否則,不會包含。值得注意的是,if語句則不同,**段都會編譯進去,只是是否執行罷了。

而條件編譯,則大多和巨集定義有關。

————————————————編譯軟體為vs—————————————————

首先,說一下#ifdef,#elif,#else;

先新建乙個專案,名為txet,然後,新建乙個類,名為text,然後再此類裡面定義乙個巨集text,

class text

然後在主函式裡引用此類,再加上#ifdef text,其後的**段就會執行。注意,不論是何種型別,在最後都必須加上#endif。這是因為,其執行的是**段,而不是與if似的不加花括號後的一句**。

而#ifndef唯一不同的是,若該巨集定義未被定義過,則執行#ifndef所含的**段。

#ifdef  text

cout << "hello earth";

#else

cout << "hello moon";

#endif

#if則後跟乙個表示式。

而條件編譯的另乙個主要應用就是防止標頭檔案的重複定義。就是在標頭檔案中使用(#ifndef)定義乙個巨集,若呼叫此標頭檔案時,就定義它。而當另外乙個標頭檔案被呼叫時,若此標頭檔案包含上乙個標頭檔案時,則不會在載入它而直接到#endif。

這是一種方法,而微軟則在類中使用#pragma once,既只用一次,來防止該現象。

#pragma once

class text

;

條件編譯 if

1 為什麼需要條件編譯 客戶的需求在不停地發生變化,一會兒需要這個功能,一會兒不需要這個功能。我們可以使用條件編譯來方便地裁剪功能。2 條件編譯語句 if 條件編譯語句 if的形式是 1 if expression 2.3 elif expression 4.5 elif expression 6....

if 條件編譯

1.格式 if constant expressionstatements elif constant expressionstatements else statements endif 其中 constant expression 常量表示式 字面值常量,或者乙個有 define定義的符號 由預...

條件編譯 if

1 為什麼需要條件編譯 客戶的需求在不停地發生變化,一會兒需要這個功能,一會兒不需要這個功能。我們可以使用條件編譯來方便地裁剪功能。2 條件編譯語句 if 條件編譯語句 if的形式是 1 if expression 2.3 elif expression 4.5 elif expression 6....