C語言的#if #ifdef #ifndef


#if #ifedf #ifndef

   —般情況下,C語言源程序中的每一行代碼.都要參加編譯。但有時候出於對程序代碼優化的考慮.希望只對其中一部分內容進行編譯.此時就需要在程序中加上條件,讓編譯器只對滿足條件的代碼進行編譯,將不滿足條件的代碼舍棄,這就是條件編譯!

  條件編譯是C語言中預處理部分的內容,它是編譯器編譯代碼時最先處理的部分,

 

  條件編譯里面有判斷語句,比如 #if 、#else 、#elif 都由#endif結束

 

  它的意思是如果宏條件符合,編譯器就編譯這段代碼,否則,編譯器就忽略這段代碼而不編譯,如

  

#include<CHAP01.h>

#define i -1

void main()
{
#if (i > 0)
{
printf("%d\n", i);
printf("You defined stone!\n");
}

#elif (i == 0)
{
printf("%d\n", i);
printf("You defined river!\n");
}

#else
{
printf("%d\n", i);
printf("You defined NULL!\n");
}

#endif
}

#include<CHAP01.h>

#define i -1

void main()
{
//    int i;        條件編譯的條件一般由 #define 去定義, int 類型的變量不能起到效果
//    scanf_s("%d", &i);
#if (i > 0)
    {
        printf("%d\n", i);
        printf("You defined stone!\n");
    }

#elif (i == 0)
    {
        printf("%d\n", i);
        printf("You defined river!\n");
    }

#else
    {
        printf("%d\n", i);
        printf("You defined NULL!\n");
    }

#endif
}

 

  #ifdef   判斷宏是否定義, 是就執行ifdef下的代碼, 否則執行else下的代碼

#include<CHAP01.h>

//#define stone

#ifdef stone
    void main()
    {
        printf("You defined stone!\n");
    }
#else
    void main()
    {
        printf("You defined NULL!\n");
    }
#endif

  #ifndef    一般用於檢查定義, 防止重復定義

  #ifndef stone             // 如果VALUE沒有被定義
  #define stone1000          //  定義VALUE 為1000
  #endif

  自我理解, 不對的地方請指正!

  

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM