검색결과 리스트
매크로에 해당되는 글 1건
- 2013.12.02 로그 메시지 출력을 위한 가변인수와 매크로
C++에서는 로그를 남기기 위해 로그 라이브러리를 만들 때 꼭 사용하는 것이 가변인수와 매크로입니다.
가변인수를 사용하여
void LogMessage( LPCTSTR format, ... )
{
char SBody[ MAX_PATH ] = { 0, };
va_list strlist;
va_start( strlist, format );
_vsntprintf_s( SBody, _countof(SBody), _TRUNCATE, format, strlist );
va_end( strlist );
}
이런 식으로 하나의 메시지를 만들고
이 LogMessage함수를 어디서, 언제 호출했는지 알리는 방법은 __FILE__, __LINE__, __FUNCTION__ 와 같은 매크로를 사용합니다.
이런 기능을 닷넷에서 구현하려면 가변인수는 다음과 같은 방식으로 구현 합니다.
public void print(int i, params string[] messages)
{
string logmsg;
foreach (string msg in messages)
logmsg += msg;
}
그리고 __FILE__, __LINE__, __FUNCTION__ 매크로는 닷넷의 어트리뷰트를 사용합니다.
using System.Runtime.CompilerServices;
using System.Diagnostics;
void LogToUI(string logText,
[CallerFilePath] string fileName = "",
[CallerMemberName] string methodName = "",
[CallerLineNumber] int lineNumber = 0)
{
string logmsg = string.Format("[줄:{0}|호출:{1}|시간{2}] : {3}", lineNumber, methodName, DateTime.Now.ToShortTimeString(), logText);
listBoxLog.Items.Add(logmsg);
}
// 사용
LogToUI("서버 생성 성공");
댓글