c언어 - 조건부 컴파일

조건부 컴파일
공부 : c언어 코딩도장


// 매크로가 정의되어 있을 때 컴파일          // DEBUG 매크로가 정의되어 있을 때 컴파일
#ifdef 매크로                              #ifdef DEBUG
코드                                           printf("Debug\n");
#endif                                     #endif

// 매크로가 정의되어 있지 않을 때 컴파일     // DEBUG 매크로가 정의되어 있지 않을 때 컴파일
#ifndef 매크로                             #ifndef DEBUG
코드                                           printf("Hello, world!\n");
#endif                                     #endif

// 값 또는 식이 참일 때 컴파일              // DEBUG_LEVEL이 2 이상일 때 컴파일
#if 값 또는 식                             #if DEBUG_LEVEL >= 2
코드                                           printf("Debug Level 2\n");
#endif                                    #endif

                                          // 조건이 항상 거짓이므로 컴파일 하지 않음
                                          #if 0
                                              printf("0\n");
                                          #endif

                                          // 조건이 항상 참이므로 컴파일함
                                          #if 1
                                              printf("1\n");
                                          #endif



// 매크로가 정의되어 있을 때 컴파일. 
// !, &&, ||로 논리 연산 가능             // DEBUG 또는 TEST가 정의되어 있을 때 컴파일
#if defined 매크로                       #if defined DEBUG || defined TEST
코드                                         printf("Debug\n");
#endif                                   #endif

                                         // DEBUG가 정의되어 있으면서 
                                         // VERSION_10이 정의되어 있지 않을 때 컴파일
                                         #if defined (DEBUG) && !defined (VERSION_10)
                                             printf("Debug\n");
                                         #endif

// if, elif, else로 조건부 컴파일         // DEBUG_LEVEL의 값에 따라 컴파일
#if 조건식                               #if DEBUG_LEVEL == 1
코드                                         printf("Debug Level 1\n");
#elif 조건식                             #elif DEBUG_LEVEL == 2
코드                                         printf("Debug Level 2\n");
#else                                    #else
코드                                         printf("Hello, world!\n");
#endif                                   #endif

// if, elif, else로 조건부 컴파일         // PS2, USB 정의 여부에 따라 컴파일
#ifdef 매크로                            #ifdef PS2
코드                                         printf("PS2\n");
#elif defined 매크로                     #elif defined USB
코드                                         printf("USB\n");
#else                                    #else
코드                                         printf("지원하지 않는 장치입니다.\n");
#endif                                   #endif

댓글