2013年9月6日 星期五

C前置處理器-條件式編譯


#include <stdio.h>

int main()
{

#define A 1
#define C 1
#define E 1

#if A //true
    printf("HelloWorle-1\n");
#endif

#if B //false
    printf("HelloWorle-2\n");
#endif

#if defined(C) //true
    printf("HelloWorle-3\n");
#endif

#if defined(D) //false
    printf("HelloWorle-4\n");
#endif

#if !defined(E) //true
    printf("HelloWorle-5\n");
#endif

#if !defined(F) //false
    printf("HelloWorle-6\n");
#endif

    return 0;

}

結果:


#if  #if defined(x)  #if !defined(x) 結尾都要加上#endif,由上述的程式範例可以看到反白處都是編譯器不會被編譯到的程式碼.
當#if  #if defined(x)  #if !defined(x)的判斷式沒有被#define宣告,就為"0",反之當被#define宣告為為"1"時,編譯器就會被編譯到判斷式內的程式碼.

沒有留言:

張貼留言