C언어(2020년)

27. 전처리기

리더2333 2020. 11. 4. 02:47
반응형
#define _WINDOW_SYSTEM

#ifdef _WINDOW_SYSTEM

(코드)

#endif

이런식으로 #ifdef 와 #endif 사이의 코드가

특정 #define 이 되어있는 경우에만 코드가 컴파일 되도록 설정 할 수 있다.

 

#ifdef _WIN64

(코드)

#elif _WIN32

(코드)

#elif __APPLE__
    #if TARGET_IPHONE_SIMULATOR
          // iOS Simulator
    #elif TARGET_OS_IPHONE
          // iOS device
    #elif TARGET_OS_MAC
          // Other kinds of Mac OS
    #else
    #   error "Unknow Apple platform"
    #endif
#elif __linux__

(코드)

#elif __unix__

(코드)

#elif defined(_POSIX_VERSION)

(코드)

#else
#  error "Unknow compiler"
#endif

위의 예제와 같이

#ifdef 와 #endif 사이에 #elif 를 넣어서 (else if와 같이 사용) 사용 할 수 있다.

또한 #error 을 사용하여 컴파일 시 에러를 출력하도록 할 수도 있다.

또한 _POSIX_VERSION 대신에 defined(_POSIX_VERSION) 을 사용 할 수도 있다.

 

#ifdef _DEBUG

(코드)

#else

(코드)

#endif

이렇게 코드하면, 디버그모드일때에만 실행되거나, 릴리즈모드일때에만 실행되도록 할 수 있다.

 

 

visual studio 상단에 Debug 모드와 Release 모드를 변경할 수 있는데,

Debug 모드란 : 개발할 때 필요한 정보를(디버그정보) 담아서 실행화일을 만드는 것을 의미하고,

Release 모드란 : 개발이 끝나고 출시(배포) 하기 위해 만드는 실행화일을 의미한다.

 

 

_DEBUG 를 #define 한적이 없는데 어떻게 되느냐고 궁금할수도 있는데

프로젝트 속성에서 C/C++ 의 전처리기를 선택하면

전처리기 정의 에 _DEBUG 가 정의 되어 있음을 확인 할 수 있다.

 

 

 

#ifdef _DEBUG

#endif

한국말로 한다면

만약 _DEBUG 가 정의 되어 있다면

이라고 해석 할 수 있겠는데,

 

#ifndef _DEBUG

#endif

와 같이 만약 _DEBUG 가 정의 되어 있지 않다면(# if n def)

와 같이 #ifndef 도 있다.

반응형

'C언어(2020년)' 카테고리의 다른 글

29. typedef  (0) 2020.11.04
28. union  (0) 2020.11.04
26. 가변인자 함수 만들기  (0) 2020.11.04
25. Call by Value, Call by reference, Call by Address  (0) 2020.11.04
24. 함수  (0) 2020.11.04