#if #ifdef #ifndef #if defined #else #endif

2022년 11월 09일 by 진아사랑해

    #if #ifdef #ifndef #if defined #else #endif 목차
반응형

개요

C 프로그램을 하면서 가끔씩 사용에 혼돈이 있어 개인적으로 정리하였다

디버깅 목적으로 사용하거나 또는 조건에 따라 프로그램 흐름을 제어하기 위하여도 사용할 수 있다

기본적인 전처리

#if 0

code <- 코드가 실행되지 않는다 (위의 #if 0 -> #if 1 로 변경하면 코드가 실행된다)

#endif

 

#if 1

code 1 <- 코드가 실행된다           (위의 #if 1 -> #if 0 로 변경하면 코드 1가 실행되지 않는다)

#else

code 2 <- 코드가 실행되지 않는다 (위의 #if 1 -> #if 0 로 변경하면 코드 2가 실행된다)

#endif

 

#define DEBUG 1

#if DEBUG

code 1 <- 코드가 실행된다           (위의 #define DEBUG 1 -> 0 로 변경하면 코드 1가 실행되지 않는다)

#else

code 2 <- 코드가 실행되지 않는다 (위의 #define DEBUG 1 -> 0 로 변경하면 코드 2가 실행된다)

#endif

참고) if !(DEBUG)를 사용하여도 #define DEBUG 과 동일한 효과를 나타냄

 

#define ABC 2

#if ABC== 1 

code 1 <- 코드가 실행되지 않는다

#elif ABC== 2

code 2 <- 코드가 실행된다          (#define ABC 2 -> 3 로 변경하면 코드 2가 실행되지 않는다)

#elif ABC== 3

code 3<- 코드가 실행되지 않는다   (#define ABC 2 -> 3 로 변경하면 코드 3이 실행된다)

#else

code 4<- 코드가 실행되지 않는다

#endif

 

#define DEBUG

#ifdef DEBUG                           

code 1 <- 코드가 실행된다         (#ifdef DEBUG -> #ifndef DEBUG 로 변경하면 코드 1가 실행되지 않는다)

#eles

code 2 <- 코드가 실행되지 않는다 (#ifdef DEBUG -> #ifndef DEBUG 로 변경하면 코드 2가 실행된다)

#endif

 

#ifndef ABC

#define ABC 1   <- ABC에 대한 define이 없으면 ABC를 1로 정의하라

#endif

 

#define DEBUG

#if defined DEBUG                           

code 1 <- 코드가 실행된다         (#if defined DEBUG -> if !defined DEBUG 로 변경하면 코드 1가 실행되지 않는다)

#eles

code 2 <- 코드가 실행되지 않는다 (#if defined DEBUG -> if !defined DEBUG 변경하면 코드 2가 실행된다)

#endif

조건부 전처리

#define ABC 1

#define DEF 0

#if defined(ABC) || defined(DEF)

code   <- 코드가 실행된다

#endif

 

#if defined(ABC) && defined(DEF)

code   <- 코드가 실행되지 않는다

#endif

 

#if defined(ABC) && !defined(DEF)

code   <- 코드가 실행된다

#endif

 

#define ABC

#define DEF

if (defined ABC || defined DEF)

code   <- 코드가 실행된다

#endif

#define ABC 또는 #define DEF가 선언되면 수행된다

 

#define ABC

if (defined ABC && defined DEF)

code   <- 코드가 실행되지 않는다

#endif

 

즐거운 시간되세요

반응형