Netbeans6.1預處理程序指令

Netbeans6.1預處理程序指令

大多數的預處理是由預處理程序指令控制的。這些指令是在源代碼中指定的,方法是:創建以 //# 字符序列開頭的註釋行,然後直接在字符序列後面跟隨指令。例如,//#ifdef

類似於 XML 語言,預處理程序指令的格式必須正確無誤。即,它們必須包含開始指令和結束指令。例如,當塊以 //#if 指令開頭時,它必須以 //#endif 指令結尾。可以對塊進行嵌套,這意味着 if/elif/else/endif 塊內可以包含任意數量的其他 if/elif/else/endif 塊。

指令可以定義操作和條件。預處理程序決定了是註釋還是取消註釋代碼塊。可以定義或不定義指令表達式中的符號。但是,標識符和變量必須始終包含可以在預處理期間使用或比較的值。預處理程序支持三種類型的變量:字符串、整數以及布爾值。

變量名稱必須以字符/標記開頭,它們與有效 JAVA 標識符的開頭字符/標記相同,此外,後續字符還可以是 "."、"/" 和 "/"。可以使用常見的比較語法(<=、<、>=、>==)來比較不同的變量類型。也可以使用布爾運算,如 &&、||、!^。還可以使用 <變量名稱>:defined 或 defined(<變量名稱>) 函數來檢查變量定義。創建新代碼塊時,沒有必要也不應該使用此功能,內置此功能是爲了便於從 J2ME Polish 中進行導入。有關詳細信息,請參見比較預處理程序變量

以下示例顯示了包含嵌套 elif 指令的 If/Else 代碼塊。

//#if mmedia 
   //#if nokia
        //#if s60_ver=="1.0"
        import com.nokia.mmapi.v1
        //#elif s60_ver=="2.0" 
        import com.nokia.mmapi.v2
       //#else
       import com.nokia.mmapi.def
       //#endif
  //#else
      import javax.microedition.mmapi
  //#endif
//#endif 
  • NetBeans IDE 支持 Antenna 預處理程序

指令語法

有關預處理程序指令的說明,請參見下表。

指令
描述
#ifdef [identifier] 該標識符表示任何類型(布爾值、字符串或整數)的變量並檢查是否定義了該變量。如果定義了變量(即爲 True),則會處理後面的代碼。也會處理嵌套的塊。如果未定義變量(即爲 False),則註釋後面的代碼並且不計算嵌套的塊。該指令必須以 #endif 結尾。
#ifndef [identifier] ifdef 的作用相同,但是如果未定義變量,則返回 "True"。該指令必須以 #endif 結尾。
#elifdef [identifier] 作爲標準的 else if 語句使用,但可以自動檢查是否定義了標識符。該指令只能在以 ifdef/ifndef 開頭的塊內部提供補充內容。
#elifndef [identifier] 作爲標準的 else if 語句使用,但可以自動檢查是否定義了標識符。該指令只能在以 ifdef/ifndef 開頭的塊內部提供補充內容。
#if [expression] 計算傳遞給它的表達式並引發相應的操作。該指令必須以 endif 結尾。
#elif [expression] 作爲標準的 else if 語句使用,並且只能在以 if 語句開頭的塊中提供補充內容。該指令根據表達式的結果來預處理後面的代碼。
#else 作爲標準的 else 語句使用,僅當定義塊中以前的所有條件均不成立時,纔會預處理後面的代碼。在以 if/ifdef/ifndef 指令開頭的任何塊內部提供補充內容。
#endif 必須使用該指令來結束以 if/ifdef/ifndef 開頭的任何塊。
#condition [expression] 必須作爲文件中的第一行。該指令基於表達式的結果來確定是否應該在生成中包括該文件。
#debug [level] 基於項目屬性的“編譯”頁中設置的調試級別,確定是應該註釋還是取消註釋指令後面的行。如果忽略了調試級別,並且在項目屬性中未將調試級別設置爲 "Off",則預處理程序將自動調試該行。例如,該指令與諸如 System.out.println 表達式結合使用以執行調試。可以對該指令進行嵌套。
#mdebug [level] #debug 的作用相同,但會註釋或取消註釋它所在行後面的整個行塊,直至其執行 #enddebug 時爲止。例如,該指令與諸如 System.out.println 表達式結合使用以執行調試。可以對該指令進行嵌套。如果 mdebug 塊與 if/ifdef/ifndef 塊部分交叉(例如,enddebug 位於調用 mdebug 的結束 if 塊之外),則預處理程序將生成錯誤。
#enddebug 必須終止 #mdebug 塊。
#define [identifier] #define [identifier=value] #define [identifier value] 可以將臨時性能或變量添加到預處理程序內存中。無法在嵌套塊中使用。項目配置屬性中定義的全局變量將覆蓋這些臨時變量。
#undefine [identifier] 從內存中刪除臨時的性能/變量。也可以使用此聲明從預處理程序內存中刪除項目配置屬性中定義的全局變量,但不會刪除項目列表中的變量或配置變量。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章