C語言的#if #ifdef #ifndef
阿新 • • 發佈:2018-11-27
#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> #definei -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
自我理解, 不對的地方請指正!