목차
[C언어/C++]전처리기 #ifdeff란? 사용 목적
전처리기 #ifdef를 사용하는 이유는 컴파일 시간에 조건부로 코드를 컴파일(Compile)하거나 무시할 수 있도록 하기 위해서입니다. 이는 특정한 조건이 만족되었을 때만 특정 코드 블록을 컴파일하도록 지시하는 데 사용됩니다. 반면, 일반적인 if문은 프로그램이 실행 중에 조건에 따라 코드 블록을 실행하거나 건너뛸 때 사용됩니다.
#ifdef: 컴파일 전에 전처리기가 코드를 처리하므로, 컴파일 시간에 조건에 따라 코드를 포함하거나 제외합니다. 실행 중에는 조건 검사를 수행하지 않습니다. if는 프로그램이 실행 중에 조건을 검사하여 코드 블록을 실행하거나 건너뜁니다.
간단히 말하지만 #ifdef 조건을 걸면 조건에 맞지 않는 부분은 컴파일 단계에서 없어지고 메모리 공간을 절약할수 있게 됩니다.
예제를 통해 언제 유용하게 사용할 수 있는지 알아보겠습니다.
[C언어/C++]전처리기 #ifdeff 예제로 이해하기
#ifdef는 조건부 컴파일을 수행하는데 가장 유용하게 사용되는 전처리기 지시어 중 하나입니다. 가장 흔히 사용되는 예제는 특정 플랫폼이나 컴파일 환경에서만 실행되어야 하는 코드를 처리하는 경우입니다.
예를 들어, C++ 프로그램을 Windows와 Linux 운영체제에서 동작하도록 개발해야 한다고 가정해봅시다. 이때 Windows와 Linux는 파일 경로 구분자가 다르며, 각각의 운영체제에 맞게 코드를 작성해야 합니다. 이때 #ifdef를 사용하여 각 운영체제에 맞는 코드를 컴파일할 수 있습니다.
예제 코드>>
#include <iostream>
#ifdef _WIN32
const std::string basePath = "C:\\Users\\User\\Documents\\";
#else
const std::string basePath = "/home/user/Documents/";
#endif
int main() {
std::string filename = "data.txt";
std::string fullPath = basePath + filename;
std::cout << "File path: " << fullPath << std::endl;
return 0;
}
위 예제에서 _WIN32는 Windows 환경에서 기본적으로 정의되는 전처리기 매크로(Macro)입니다. 따라서 #ifdef _WIN32와 #else 사이의 코드 블록은 Windows 운영체제에서 실행되고, 그렇지 않은 경우(즉, Linux와 Mac 등)에는 #else와 #endif 사이의 코드 블록이 실행됩니다.
이렇게 사용하면 코드를 간단히 변경하여 여러 플랫폼에서 동작하도록 할 수 있습니다. 운영체제마다 다른 코드를 작성하는 대신 #ifdef를 활용하여 특정 환경에서만 적절한 코드를 사용할 수 있습니다. 이는 크로스 플랫폼 프로그래밍을 위한 편리한 방법 중 하나입니다.
코드 다운로드>>
'C언어 C++ Programming' 카테고리의 다른 글
[C언어/C++] 고정형 정수형이란? 예제 코드로 쉽게 이해하기(int8_t, int16_t, int32_t, int64_t) (0) | 2023.08.01 |
---|---|
[C언어/C++] 정수형 타입 종류, 크기, 범위, 예제 코드로 확인(sizeof, numeric_limits) (0) | 2023.07.31 |
[C언어/C++] Namespace이란? 사용 목적, 예제로 이해하기 (0) | 2023.07.26 |
[C언어/C++]#pragma once 사용 목적, 예제로 쉽게 알아보기(이유,샾) (0) | 2023.07.25 |
[C++]헤더파일 사용 예제로 이해하기(Header file) (0) | 2023.07.24 |