C언어 C++ Programming

[C언어/C++]전처리기 #ifdeff란? 사용 목적, 예제로 쉽게 이해하기(Preprocessor, sharp)

끄적끄적아무거나 2023. 7. 28. 09:37
반응형

 

목차

     

     

     

     

     

     

    [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를 활용하여 특정 환경에서만 적절한 코드를 사용할 수 있습니다. 이는 크로스 플랫폼 프로그래밍을 위한 편리한 방법 중 하나입니다.

     

     

     

    코드 다운로드>>

    main.cpp
    0.00MB

    반응형