C/C++

__FILE__ __LINE__ __FUNCTION__ 등 매크로

by MoA posted Jan 02, 2014
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄
#include <iostream>
using namespace std;

void MacroTest()
{
cout << "함수 이름: " << __FUNCTION__ << endl;
cout << "이 부분이 실행되고 있는 라인 번호: " << __LINE__ << endl;
cout << "현재 파일 이름: " << __FILE__ << endl;
cout << "가장 최근에 컴파일된 시간: " << __TIME__ << endl;
cout << "가장 최근에 이 파일이 수정된 시간: " << __TIMESTAMP__ << endl;
}

int main()
{
MacroTest();
return 0;
}


__FUNCTION__의 경우 Visual Studio에서 지원하는 매크로이며 표준은 아니다. 표준은 __func__


유니코드 환경에서는 TEXT(__FILE__) 같이 문자열 상수를 유니코드로 바꾸려하면 에러난다.

L"파일명"으로 바뀌는게 아니라 L__FILE__ 로 바뀌기 때문.(TEXT 매크로 우선 실행)

그러므로 아래와 같이 매크로를 새로 정의한다.


#define WIDEN(x) L ## x
#define __WFILE__ WIDEN(__FILE__)

__FILE__ 대신 __WFILE__을 사용하면 된다.

물론 const char*를 const wchar_t* 로 변환하는 함수를 사용하는 방법도 있으나 매크로보단 어렵다.


출처 : http://blog.naver.com/sorkelf/40140962401

참고 : http://msdn.microsoft.com/ko-kr/library/b0084kay(v=VS.90)