⑴ if語句與條件編譯
if(變數名
#ifdef
宏定義變數
||
變數名
#endef
)
就是說如果你的宏定義變數被宏定義了,那麼你的||變數名就參與編譯否則根本就不參與編譯,就像沒有這段代碼一樣.
⑵ C語言中條件編譯和If語句之間的差別,各適用於什麼情況
條件編譯是C語言中預處理部分的內容,它是編譯器編譯代碼時最先處理的部分,
條件編譯裡面有判斷語句,比如
#if
、#else
、#elif
及
#endif
它的意思是如果宏條件符合,編譯器就編譯這段代碼,否則,編譯器就忽略這段代碼而不編譯,如
#define
A
0
//把A定義為0
#if
(A
>
1)
printf("A
>
1");
//編譯器沒有編譯該語句,該語句不生成匯編代碼
#elif
(A
==
1)
printf("A
==
1");
//編譯器沒有編譯該語句,該語句不生成匯編代碼
#else
printf("A
<
1");
//編譯器編譯了這段代碼,且生成了匯編代碼,執行該語句
#endif
而
if
語句則不然,if
是
C
語言中的關鍵字,它根據表達式的計算結果來覺定執行那個語句,它裡面的每個分支都編譯了的,
如
#define
A
0
if
(A
>
1)
printf("A
>
1");
//編譯器編譯該語句,但因為A
==
0
未執行
else
if(A
==
1)
printf("A
==
1");
//編譯器編譯該語句,但因為A
==
0
未執行
else
printf("A
<
1");
//編譯器編譯該語句,因為A
==
0
故執行
所以
簡單地講,條件編譯是根據
宏條件
選擇性地編譯語句,它是編譯器在編譯代碼時完成的;
條件語句是根據條件表達式選擇性地執行語句,它是在程序運行時進行的。
⑶ c語言 #if 和if有什麼區別
#if和if都是C和C++中的指令,但是二者區別很大。x0dx0a1)#if屬於條件編譯技術,用於給編譯器提供信息,控制有些代碼變成機器語言;x0dx0a2)if屬於程序判斷,在程序運行時控制語句是否被執行;x0dx0a3)#if在程序編譯前執行,if在程序運行時執行;x0dx0a4)#if後面不能寫變數,if後面可以寫變數。
⑷ 條件編譯,ifdef條件,ifndef條件的區別是什麼
一般情況下,源程序中所有行都參加編譯。但是有時希望程序中一部分內容只在滿足一定條件是才進行編譯,也就是對這一部分內容指定編譯的條件,也就出現了條件編譯.
#ifdef 和 #ifndef 用法及意義其實跟判斷語句if是一樣的
但使用if語句目標程序長,因為所有語句都要進行編譯,運行時間長,因為運行時要對if語句進行測試
,而採用條件編譯,就可以減少編譯語句,從而減少目標程序的長度,減少運行時間。
⑸ C++ if()是不是條件編譯指令
不是,條件編譯是在預處理階段,if語句是在程序執行階段。
怎麼不是用分號結束的?if()後面是不是還有一條語句?例如:
if(x > 1)
z = 10;
else
z = 20;
這段也可以寫成:
if(x > 1) z = 10;
else z = 20;
如果你不想對判斷做任何操作的話,那就可以寫成:
if(x > 1);
else ;
⑹ C++中if、#if與#ifdef、#ifndef彼此的區別
1、意義不同
#開頭的都是預編譯指令,就是在正式編譯之前,編譯器做一些預處理的工作
,所以說#if與#ifdef、#ifndef都是,而if是判斷語句,不是預編譯指令。
2、用法
if是條件語句,在運行的過程中根據條件的值選擇執行不同的語句。
#if是條件編譯語句,在編譯階段執行,如果後面跟的條件成立,就編譯對應的語句。
#ifdef是條件編譯語句,在編譯階段執行,後面跟一個宏的名稱,如果這個宏已經定義了,就編譯對應的語句。
#ifndef是條件編譯語句,在編譯階段執行,後面跟一個宏的名稱,如果這個宏沒有定義,就編譯對應的語句。
C++中if、#if與#ifdef、#ifndef的具體使用方法
一、#ifdef 和 #ifndef 指令 (C/C++)
只要能夠使用 #if,就可以使用 #ifdef 和 #ifndef 指令,在定義 identifier 時,#ifdef identifier 語句與 #if 1 等效,當 identifier 未定義或沒有使用 #undef 指令進行定義時,該語句與 #if 0 等效。
這些指令只檢查使用 #define 定義的標識符是否存在,而不檢查在 C 或 C++ 源代碼中聲明的標識符。
提供這些指令只是為了實現與該語言的早期版本的兼容性。 優先選擇將 defined( identifier ) 常量表達式與 #if 指令一起使用。
#ifndef 指令檢查 #ifdef 所檢查的條件的相反值。 如果尚未定義標識符(或已使用 #undef 移除其定義),則條件為 true(非零)。 否則,條件為 false (0)。
二、#if :
源文件中的每個#if指令必須與表示結束的 #endif指令匹配,任意數量的 #elif指令可以出現在 #if 和 #endif指令之間。
但最多允許一個 #else 指令,且 #else指令(如果有)必須是#endif之前的最後一個指令。
⑺ #if可以用於條件編譯嗎
不行。
預編譯在編譯過程的早期進行,
此時尚未對類型名稱進行分析。
作為替代,
可以考慮使用
ansi
的
中定義的常量,
或者使用
``配置"
(configure)
腳本。
更好的辦法是,
書寫與類型大小無關的代碼