- #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
즐거운 시간되세요
'STM32' 카테고리의 다른 글
[STM32]CAN의 Basic Parameters들의 설명 (0) | 2023.12.14 |
---|---|
[STM32]usart(uart) 송신 수신 인터럽트 사용하기 (0) | 2023.12.14 |
Warning[Pa050]: non-native end of line sequence detected (this diagnostic is only issued once) (0) | 2022.08.25 |
[Windows]COM Port(컴 포트) 번호 변경 방법 (0) | 2022.06.17 |
tVOC의 ppm, ppb, mg/m3 (0) | 2022.06.07 |