본문 바로가기
카테고리 없음

[C/C++] 정의된 매크로 (__FUNCTION__ __DATE__ 등)

by 까망 하르방 2025. 4. 12.
반응형

정의된 매크로

매크로 중에는 이미 약속되어 있는 매크로 존재

컴파일러 종류와 버전에 따라 다를 수 있다.

__FILE__
전체 디렉터리 경로를 포함한 파일명

__FUNCTION__
매크로명이 사용된 함수 이름

__LINE__
매크로명이 사용된 행 번호

__DATE__
__TIME__
컴파일 시작한 날짜와 시간

[예시 코드]

#include <iostream>

void handleError(const char* errorMessage)
{
    std::cerr << "Error: " << errorMessage << "\n"
        << "Occurred in file: " << __FILE__ << "\n"
        << "Function: " << __FUNCTION__ << "\n"
        << "Line: " << __LINE__ << "\n"
        << "Build time: " << __DATE__ << " " << __TIME__ << "\n";
}

void doSomethingRisky()
{
    // 오류 발생 가정
    handleError("Something went wrong during operation.");
}

void main()
{
    doSomethingRisky();
}



결과 예시


이외의 다양한 매크로

__GNUC__ (GNU 컴파일러 사용 여부 및 버전)
__cplusplus (C++ 표준 버전)와 같이
다양한 매크로도 있으니 찾아보면 좋을 것 같다.

#include <iostream>

int main()
{
#if __cplusplus >= 202002L
    std::cout << "Using C++20 or later.\n";
#elif __cplusplus >= 201703L
    std::cout << "Using C++17.\n";
#elif __cplusplus >= 201402L
    std::cout << "Using C++14.\n";
#else
    std::cout << "Using older C++ standard.\n";
#endif
    return 0;
}

 

 

📌 [C/C++] #ifdef, #if defined() 비교 및 활용

 

[C/C++] #ifdef, #if defined() 비교 및 활용

[전처리기] #ifdef에서 #ifdef 형태와 활용 방법을 다루었다. #define IMSI #ifdef IMSI #define MAX_SPEED 10 #else #define MAX_SPEED 100 #endif int speed; int main() { // 최고 속도이하로 수치조정 if (speed > MAX_SPEED) speed = MAX_S

zoosso.tistory.com

 

📌 [C/C++] #define과 const 차이

 

[C/C++] #define과 const 차이

#define• 메모리에 올라가지 않는 장점• 타입 지정 필요 없다• 전처리기로 수행되기 때문에 디버깅 하기 쉽지 않다.• 연산 우선순위에 따라 다르게 계산될 수 있기에 괄호 표시 주의 const• 

zoosso.tistory.com

반응형

댓글