반응형
정의된 매크로
매크로 중에는 이미 약속되어 있는 매크로 존재
컴파일러 종류와 버전에 따라 다를 수 있다.
__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 차이
#define• 메모리에 올라가지 않는 장점• 타입 지정 필요 없다• 전처리기로 수행되기 때문에 디버깅 하기 쉽지 않다.• 연산 우선순위에 따라 다르게 계산될 수 있기에 괄호 표시 주의 const•
zoosso.tistory.com
반응형
댓글