728x90
안녕하세요!
이번에는 전처리기 포스팅에 덧붙여서 C++에서의 조건부 컴파일에 대해 자세히 알아보겠습니다.
조건부 컴파일은 특정 조건에 따라 컴파일러가 코드를 포함하거나 제외하는 기능을 제공합니다.
이를 통해 운영 체제, 플랫폼, 컴파일러 버전 등에 따라 다른 코드를 사용할 수 있습니다.
조건부 컴파일은 주로 #ifdef, #ifndef, #else, #endif 등의 전처리기 지시문을 사용하여 구현됩니다.
#ifdef와 #ifndef
- #ifdef는 지정된 매크로 심볼이 정의되어 있는지를 확인하고, 정의되어 있다면 해당 코드 블록을 컴파일합니다.
- #ifndef는 지정된 매크로 심볼이 정의되어 있지 않은지를 확인하고, 정의되어 있지 않다면 해당 코드 블록을 컴파일합니다.
#ifdef MY_MACRO
// MY_MACRO이 정의되어 있을 때 실행되는 코드
#endif
#ifndef MY_MACRO
// MY_MACRO이 정의되어 있지 않을 때 실행되는 코드
#endif
#else와 #endif
- #else는 #ifdef 또는 #ifndef의 조건이 거짓일 경우 실행할 코드를 정의합니다.
- #endif는 조건부 컴파일 블록의 끝을 나타내며, #ifdef, #ifndef, #else와 짝을 이룹니다.
#ifdef MY_MACRO
// MY_MACRO이 정의되어 있을 때 실행되는 코드
#else
// MY_MACRO이 정의되어 있지 않을 때 실행되는 코드
#endif
아래는 조건부 컴파일을 활용한 간단한 예제입니다.
#include <iostream>
#define DEBUG_MODE
int main()
{
#ifdef DEBUG_MODE
std::cout << "Debug mode enabled." << std::endl;
#else
std::cout << "Debug mode disabled." << std::endl;
#endif
// 실행 코드
return 0;
}
- DEBUG_MODE 매크로가 정의되어 있으므로 "Debug mode enabled."가 출력됩니다.
- 만약 DEBUG_MODE을 정의하지 않았다면 "Debug mode disabled."가 출력됩니다.
조건부 컴파일은 특정 환경에 맞는 코드 실행을 가능하게 해주는 유용한 도구입니다.
그러나 남용하면 코드의 가독성을 해치고 유지보수를 어렵게 만들 수 있으므로 신중하게 사용해야 합니다.
다음 글에서는 C++의 코딩 컨벤션에 대해 알아보겠습니다.
감사합니다!
728x90
'[C++] > 프로그래밍 기초' 카테고리의 다른 글
[C++] 프로그래밍 기초 : 콜백 함수와 함수 포인터 (0) | 2023.06.05 |
---|---|
[C++] 프로그래밍 기초 : 코딩 컨벤션 (5) | 2023.06.05 |
[C++] 프로그래밍 기초 : 전처리기 (4) | 2023.06.03 |
[C++] 프로그래밍 기초 : 동적 할당과 메모리 누수 (2) | 2023.06.03 |
[C++] 프로그래밍 기초: 메모리 구조와 변수의 라이프사이클 (0) | 2023.06.03 |