#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;
}
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__)
#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)