1樓:娛樂小八卦啊
#ifdef和#elif是可以連用的。#ifdef和#elif連用,語法和if...else if語句一樣。
條件編譯區域以 #if、#ifdef 或 #ifndef 等命令作為開頭,以 #endif 命令結尾。條件編譯區域可以有任意數量的 #elif 命令,但最多一個 #else 命令。
#if defined的使用
#if defined (巨集)**.#endif
這個#if後面接的是一個巨集,意思是前面的巨集定義裡面有沒有定義這個巨集,如果定義了,編譯器就會編譯中間的**,如果沒有定義,那就不會編譯,不管這個巨集定義的是什麼東西,對不對等。
#ifdef的使用
ifdef的使用和#if defined()的用法是一樣的。
ifndef又和#if !defined()的用法一樣(取反的意思)。
擴充套件資料
#if 和 #elif 命令
作為 #if 或 #elif 命令條件的表示式,必須是整數常量前處理器表示式。這與普通的整數常量表示式不同,主要區別在於:
(1) 不能在 #if 或 #elif 表示式中使用型別轉換運算子。
(2) 可以使用預處理運算子 defined。
(3) 在前處理器所有巨集,並且計算完所有 defined 表示式之後,會使用字元 o 替換掉表示式中所有其他識別符號或關鍵字。
(4) 表示式中所有帶符號值都具有 intmax_t 型別,並且所有無符號值都具有 uintmax_t 型別。字元常量也會受該規則的影響。intmax_t 和 uintmax_t 定義在標頭檔案 stdint.
h 中。
(5) 前處理器會把字元常量和字串字面量中的字元與轉義序列轉換成執行字符集中對應的字元。然而,字元常量在前處理器表示式和在後期編譯階段是否具有相同的值,取決於實現版本。
2樓:風若遠去何人留
可以的。
#ifdef和#elif都是c/c++條件編譯的識別符號。二者可以連用。
如以下**:
#ifdef test0
int a = 1;
#elif test1
int a=2;
#else
int a=3;
#endif
這段**在c/c++中是合法的。根據巨集定義情況,會有如下幾種可能:
1 test0被定義,那麼,全域性變數a會被初始化為1;同時條件編譯其它部分**將被忽略。
2 如果test0沒有被定義,會判斷test1的值。如果test1被定義,且值非0,那麼a會被初始化為2。
3 如果以上均未滿足,會編譯#else部分,a被初始化為3。
3樓:匿名使用者
#ifdef和#elif可以連用,語法和if...else if語句一樣
defined的優點是在可用在處理判斷多個條件是否成立時,例如:
#if defined(__unix__) && defined(__gnuc__)
.....
#endif
如果上例用#ifdef完成,就要進行巢狀,顯然可讀性不如這樣做。
4樓:匿名使用者
關於defined,那位朋友說了....
---------------
能.#ifdef _debug
#define _ok
#elif
#define _ng
#endif
現在是不是不能吃海鮮,現在是不是不能吃海鮮?
在吃海鮮時,很多人都喜歡喝一些飲料,常常在夜市人們都很喜歡喝啤酒,但人們都不知道啤酒和海鮮搭配在一起會讓身體代謝功能混亂,產生大量的尿酸,而尿酸就會導致一些疾病,比如痛風啊或者腎結石的病症,往往在食用後會導致嘔吐和一些不良反應。西紅柿內含有大量的維生素c,而在海鮮內有一種元素會和維生素c相結合,產生...
jquery的validate是不是不能對動態載入到頁面的表
如果你引用的是jquery.validate.外掛的話,那麼提交按鈕提交前就會自動判斷。如果你不想單獨驗證不提交的話,則需要如下 function jquery驗證只能驗證表單嗎,能驗證表單裡指定的div嗎 是的,要寫好校驗規則。1 將校驗規則寫到控制元件中 ready function 2.將校驗...
魚頭是不是有毒不能吃
魚頭一般沒有毒,可以吃。但如果水質受到汙染的話,就難講了。要看什麼魚的頭啊,一般都是沒有毒的!但有些過敏性 的人不能吃魚,這個也不算魚有問題。魚頭很好吃,尤其是魚頭泡餅。香 1,所謂魚頭有毒,是指魚頭對某些重金屬有積累作用,多吃可能導致人體內某些重金屬過多,生理功能紊亂 2,天然的魚,魚頭的毒性並不...