#ifndef...#endif

進行條件式編譯。

格式
#ifndef識別碼 .. 用於條件式編譯的原始碼
[#else]... 用於真條件的原始碼
#endif

參數

識別碼
是使用者定義的關鍵字。未定義時,則編譯#ifndef到#else或#endif為止的原始碼。此識別碼作為執行編譯的條件發揮作用。

說明
此命令也稱之為「若未定義」命令,負責檢查與#ifdef相反的條件。#ifndef...#else...#endif用於對選擇的原始碼進行條件式編譯。#可省略#else陳述式。

[已定義時] 若使用#else陳述式,則編譯#else和#endif之間的陳述式。#若未使用#else陳述式,則不編譯#ifndef和#endif之間的陳述式。

[未定義時] 若使用#else陳述式,則編譯#else和#endif之間的陳述式。#若未使用#else陳述式,即編譯#ifndef和#endif之間的陳述式。

注意


  • #ifdef和#ifndef的差異

    #已定義識別碼時,#ifdef用於編譯指定的原始碼。另一方面,未定義識別碼時,#ifndef用於編譯指定的原始碼。


參照
​#define、#ifdef

#ifndef範例
以下為使用#ifndef的程式範例。在以下範例中,可依照有無#define NODELAY模擬命令定義,來控制是否輸出變數A$的值。倘若在此例記載的部分之前在原始碼中使用#define NODELAY模擬命令,則在編譯之時,Wait 1的行不會與此程式原始碼的其它部分一起編譯。倘若在此範例記載的部分之前不使用#define NODELAY模擬命令(換句話說,若未定義NODELAY),則編譯Wait 1的行,並在隨後被程式執行。無論#define NODELAY模擬命令如何,皆輸出字串「The End」。

'延遲時,會對下一行進行註解處理
 #define NODELAY 1

Input #1, A$
 #ifndef NODELAY
    Wait 1
 #endif
Print "The End"