개발자로/공부

C/C++ 미리 정의된 메크로

ReasonyB 2024. 5. 5. 03:11

미리 정의된 매크로 | Microsoft Learn

 

미리 정의된 매크로

Microsoft C++ 컴파일러의 미리 정의된 전처리기 매크로가 나열 및 설명되어 있습니다.

learn.microsoft.com

언리얼 디버깅 로그를 작성하는 예시에서 __LINE__과 같은 메크로를 접한 적이 있다. 다른 것도 궁금했었는데, 이번 네트워크 공부를 DLL 만들기로 하며 Window와 Linux 공용 스크립트를 작성하기 위해 겸사겸사 찾기로 했다.

 


ISO C99 및 ISO C++11에서의 식별자

__func__: 호출된 함수명

 

ISO C99, C11, C17 및 ISO C++17에서의 메크로

__cplusplus: C++로 컴파일되는 경우에만 정수로 정의되어 있음. 그외 정의되지 않음

__DATE__: 소스파일의 컴파일 날짜. Mmm dd yyyy형식으로 리터럴.

__FILE__: 현재 소스파일의 이름

__LINE__: 현재 소스파일의 정수 줄 번호

__STDC__: C로 컴파일 되는 경우. 그외 정의되지 않음

(중략)

__STDC_NO_THREADS__: 쓰레드 지원 X

__STDC_VERSION__: C로 컴파일되고 C11이나 C17중 하나를 선택해 컴파일 하는 경우.(값: 201112L/201710L)
(중략)

__STDCPP_THREADS__: 2개 이상의 스레드들과 C++로 컴파일 됨을 의미( 값: 1)

__TIME__: 전처리된 변환단위를 변환하는 시간..? 아무튼  hh:mm:ss 형식의 문자열 리터럴 값 반환(CRT asctime 함수의 반환 값과 동일)

 

윈도우 전용 매크로(필요할 때 마다 추가 예정)

_WIN32: 32 bit ARM, 64 bit ARM, x86 혹은 x64일 때 1로 정의. 그외는 정의되지 않음

_WIN64: 64 bit ARM 혹은 x64일 때 1로 정의. 그외는 정의되지 않음.

 


Variadic 매크로 | Microsoft Learn

 

Variadic 매크로

자세한 정보: Variadic 매크로

learn.microsoft.com

__VA_ARGS__: 개수가 정해지지 않은 가변 개수 인수를 포함하는 매크로. 쉼표로 구분된 모든 인자들을 인식함.