Cif 是不是條件編譯指令,c 中條件編譯指令的使用

2022-05-31 11:35:25 字數 5702 閱讀 6597

1樓:匿名使用者

我想問if()語句1;else()語句2;為什麼是一個語句而不是兩個,有兩個分號?

2樓:匿名使用者

語句。誰tm說語句用分號結束的。

3樓:匿名使用者

創了個程式,但知識有限,就不能修理,新增工能…哎

4樓:沒有水印的鈔票

不是,條件編譯是在預處理階段,if語句是在程式執行階段。

怎麼不是用分號結束的?if()後面是不是還有一條語句?例如:

if(x > 1)

z = 10;

else

z = 20;

這段也可以寫成:

if(x > 1) z = 10;

else z = 20;

如果你不想對判斷做任何操作的話,那就可以寫成:

if(x > 1);

else ;

5樓:匿名使用者

條件編譯指令是#開頭的吧...

c++ if()是不是條件編譯指令??

6樓:黎約全球

不是,條件編譯是在預處理階段,if語句是在程式執行階段。

如果不想對判斷做任何操作的話,那就可以寫成:

if(x > 1);

else ;

7樓:匿名使用者

不是,if()是執行條件判斷,條件編譯指令一般是#if,兩個區別很大。

if 語句在程式執行的時候執行的,用於表示哪些條件下執行哪些語句

#if條件編譯屬於預處理,所謂的預處理就是在編譯程式的時候執行,用於表示哪些語句要編譯程序序中,哪些是不需要編譯程序序中。

8樓:風若遠去何人留

if()屬於判斷語句,不是條件編譯指令。

與if類似的條件編譯指令為#if和#ifdef。

條件編譯指令屬於預編譯語句,即編譯器在執行編譯工作時,會第一步處理預編譯語句,之後再進行剩餘的編譯工作。

在c語言中,所有的預編譯語句都是以#開頭的,如#define, #undef,#if等等。

條件編譯指令包括以下幾項:

1 #if

當後續的引數為真時執行編譯。

2 #ifdef/#ifndef

#ifdef當後續的巨集定義被定義時執行編譯。

#ifndef當後續的巨集定義沒有被定義時執行編譯。

3 #elif

與c語言語句中的else if類似,與#if或#ifdef連用,當後續引數為真時執行編譯。

4 #endif

用於條件編譯結尾,表示條件編譯結束。

c++中的條件編譯是怎麼一回事?能舉例解釋一下嗎?

9樓:應用之美

一般情況下,源程式中所有的行都參加編譯。但是有時希望對其中一部分內容只在滿足一定條件才進行編譯,也就是對一部分內容指定編譯的條件,這就是「條件編譯」。有時,希望當滿足某條件時對一組語句進行編譯,而當條件不滿足時則編譯另一組語句。

條件編譯命令最常見的形式為:

#ifdef 識別符號

程式段1

#else

程式段2

#endif

它的作用是:當識別符號已經被定義過(一般是用#define命令定義),則對程式段1進行編譯,否則編譯程式段2。

其中#else部分也可以沒有,即:

#ifdef

程式段1

#denif

這裡的「程式段」可以是語句組,也可以是命令列。這種條件編譯可以提高c源程式的通用性。如果一個c源程式在不同計算機系統上執行,而不同的計算機又有一定的差異。

例如,我們有一個資料型別,在windows平臺中,應該使用long型別表示,而在其他平臺應該使用float表示,這樣往往需要對源程式作必要的修改,這就降低了程式的通用性。可以用以下的條件編譯:

#ifdef windows

#define mytype long

#else

#define mytype float

#endif

如果在windows上編譯程式,則可以在程式的開始加上

#define windows

這樣則編譯下面的命令列:

#define mytype long

如果在這組條件編譯命令之前曾出現以下命令列:

#define window

則預編譯後程式中的mytype都用float代替。這樣,源程式可以不必作任何修改就可以用於不同型別的計算機系統。當然以上介紹的只是一種簡單的情況,可以根據此思路設計出其它的條件編譯。

例如,在除錯程式時,常常希望輸出一些所需的資訊,而在除錯完成後不再輸出這些資訊。可以在源程式中插入以下的條件編譯段:

#ifdef debug

print ("device_open(%p)\n", file);

#endif

如果在它的前面有以下命令列:

#define debug

則在程式執行時輸出file指標的值,以便除錯分析。除錯完成後只需將這個define命令列刪除即可。有人可能覺得不用條件編譯也可達此目的,即在除錯時加一批printf語句,除錯後一一將printf語句刪除去。

的確,這是可以的。但是,當除錯時加的printf語句比較多時,修改的工作量是很大的。用條件編譯,則不必一一刪改printf語句,只需刪除前面的一條「#define debug」命令即可,這時所有的用debug作識別符號的條件編譯段都使其中的printf語句不起作用,即起統一控制的作用,如同一個「開關」一樣。

有時也採用下面的形式:

#ifndef 識別符號

程式段1

#else

程式段2

#endif

只是第一行與第一種形式不同:將「ifdef」改為「ifndef」。它的作用是:若識別符號未被定義則編譯程式段1,否則編譯程式段2。這種形式與第一種形式的作用相反。

以上兩種形式用法差不多,根據需要任選一種,視方便而定。

還有一種形式,就是#if後面的是一個表示式,而不是一個簡單的識別符號:

#if 表示式

程式段1

#else

程式段2

#endif

它的作用是:當指定的表示式值為真(非零)時就編譯程式段1,否則編譯程式段2。可以事先給定一定條件,使程式在不同的條件下執行不同的功能。

例如:輸入一行字母字元,根據需要設定條件編譯,使之能將字母全改為大寫輸出,或全改為小寫字母輸出。

#define letter 1

main() }

執行結果為:c language

現在先定義letter為1,這樣在預處理條件編譯命令時,由於letter為真(非零),則對第一個if語句進行編譯,執行時使小寫字母變大寫。如果將程式第一行改為:

#define letter 0

則在預處理時,對第二個if語句進行編譯處理,使大寫字母變成小寫字母(大寫字母與相應的小寫字母的ascii**差32)。此時運**況為:

c language

有人會問:不用條件編譯命令而直接用if語句也能達到要求,用條件編譯命令有什麼好處呢?的確,此問題完全可以不用條件編譯處理,但那樣做目標程式長(因為所有語句都編譯),而採用條件編譯,可以減少被編譯的語句,從而減少目標的長度。

當條件編譯段比較多時,目標程式長度可以大大減少。

補充:標頭檔案中的#ifndef

千萬不要忽略了頭件的中的#ifndef,這是一個很關鍵的東西。比如你有兩個c檔案,這兩個c檔案都include了同一個標頭檔案。而編譯時,這兩個c檔案要一同編譯成一個可執行檔案,於是問題來了,大量的宣告衝突。

還是把標頭檔案的內容都放在#ifndef和#endif中吧。不管你的標頭檔案會不會被多個檔案引用,你都要加上這個。一般格式是這樣的:

#ifndef 《標識》

#define 《標識》

......

......

#endif

《標識》在理論上來說可以是自由命名的,但每個標頭檔案的這個「標識」都應該是唯一的。標識的命名規則一般是標頭檔案名全大寫,前後加下劃線,並把檔名中的「.」也變成下劃線,如:

stdio.h

#ifndef _stdio_h_

#define _stdio_h_

......

#endif

c++中條件編譯指令的使用

10樓:星星心願

其實用的最多的是在頭編譯的條件編譯,很多頭編譯就有。比如我宣告一個test.h的標頭檔案

#ifndef test_h

#define test_h

//你要寫的**

#endif

這裡用條件編譯主要是告訴編譯器,如果其他的地方沒有包含這個標頭檔案就包含這個標頭檔案,你可以試試,用兩個標頭檔案包含包含另外一個標頭檔案,如果沒有條件編譯就會出錯,有就不會出錯。

c++條件編譯指令

11樓:匿名使用者

樓主的這種用法很不好,在c++**裡不可取,讓人一看就知道他的基礎很不紮實樓主要仔細看看這方面的知識, 加油哦。。。。。

巨集定義一般用在標頭檔案裡,結構為#define 語句#ifdef 語句語句#endif

12樓:匿名使用者

#if 是專門計算#define的值的。如:#include void main()那麼就會如你期望的輸出3而你沒有用#define定義a,b的巨集那麼#if a==b 為真,因為a也未定義,b也未定義。

未定義當然等於未定義羅。

13樓:匿名使用者

應該是 在與預編譯的時候 區域性變數還沒有賦值 ,即其使用的都是預設的值0.所以條件為true了

c++常見條件編譯用法

14樓:育知同創教育

條件編譯命令最常見的形式為:

#ifdef 識別符號

程式段1

#else

程式段2

#endif

它的作用是:當識別符號已經被定義過(一般是用#define命令定義),則對程式段1進行編譯,否則編譯程式段2。

其中#else部分也可以沒有,即:

#ifdef

程式段1

#endif

這裡的「程式段」可以是語句組,也可以是命令列。這種條件編譯可以提高c源程式的通用性。如果一個c源程式在不同計算機系統上系統上執行,而不同的計算機又有一定的差異。

例如,我們有一個資料型別,在windows平臺中,應該使用long型別表示,而在其他平臺應該使用float表示,這樣往往需要對源程式作必要的修改,這就降低了程式的通用性。

c++中的條件編譯

15樓:程式小兵

#ifdef __cplusplus //自定義標頭檔案,它的作用為你下面有聯絡的語句塊提供標頭檔案

extern "c"

#endif

求教c++中無法識別的前處理器命令是為啥?還有要完整編譯c++是否需要自己加上條件編譯命令和巨集定義命令

16樓:匿名使用者

這個**我剛才在vc++上跑了一下,沒什麼問題啊,把你的錯誤**發上來

17樓:浮俊楠

看條件而定。看你用到什麼。

c++中如何通過條件編譯選擇不同的標頭檔案呢?

c語言中判斷自然數是不是素數的條件是什麼

1,首先了解素數的定義,一個大於1的自然數,除了1和它本身外,不能被其他自然數整除。2,以下是c語言程式。include int main if flag 0 根據flag的值判斷n是否是素數printf d不是素數 n elseprintf d是素數 n return 0 c語言程式設計判斷輸入的...

js中的if()判斷成立與否的條件是不是隻有true跟fal

if 當括號裡面的值為0 空字元 false null undefined 的時候就相當於false 則不執行語句 除此之外的值就執行語句 js是若型別語言,會把條件自動轉換,比如 if a if flase if i 0 if istrue if i 0 if s s 你懂js?if中的條件有很多...

現在相親是不是都看條件的

如果你自認為憑自己能力找不到物件,那可以去相親。但這樣找物件方法,都是以利益為主的。不要過於相信,感情可以婚後慢慢培養,那是上一代人的婚姻方式,現在時代不一樣了,現實往往比感情重要。婚姻的基礎 於情感,如果互相之前沒有情感,那麼婚姻會極其不穩定,只要有第三者插足,感情會在一夜間破裂。去過民證局的朋友...