C/C++ 미리 정의된 메크로
미리 정의된 매크로
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__: 개수가 정해지지 않은 가변 개수 인수를 포함하는 매크로. 쉼표로 구분된 모든 인자들을 인식함.