2006/04/26

가변 인자를 가지는 매크로 만들기

잊어먹기 전에 정리하기!!

ANSI C버전 ==============================================
#include
#include
/>#define ERR_FUNC(fmt, args...) \
err_func(__FILE__, __LINE__, fmt, ## args)
/>void err_func(const char *, const int, char *, ...);

void err_func(const char *name, const int line, char *fmt, ...)
{
va_list ap;
va_start(ap, fmt);
fprintf(stderr, "Error in %s, line %i:", name, line);
vfprintf(stderr, fmt, ap);
va_end(ap);
}
/>int main()
{
ERR_FUNC("value=%d",12);
}


GCC버전 ==============================================
#include
#include
/>#define ERR_FUNC(fmt, args...) \
err_func(__FILE__, __FUNCTION__, __LINE__, fmt, ## args)
/>void err_func(const char *, const char *, const int, char *, ...)
__attribute__ ((format (printf, 4, 5))) /* See note below */
;
/>void err_func(const char *name, const char *func, const int line, char *fmt, ...)
{
va_list ap;
/> va_start(ap, fmt);
fprintf(stderr, "Error in %s, line %i, in %s():", name, line, func);
vfprintf(stderr, fmt, ap);
va_end(ap);
}
/>int main()
{
ERR_FUNC("value=%d",12);
}

2006/04/14

MSVC 6과 STL

한참 STL을 공부하면서 STLport를 깔았었다.
VC++6이 STL에 있어서는 너무나 험악한 평을 들어서 처음부타 STLport를 깔았었다.
한동안 잊고 지내다 이번에 STL을 쓸 일이 생겨 잘 쓰고 있는데...
어느순간 warning message를 뿌려대는 것이다. 순간당황 했지만 무시하고 있었는데...
확인결과 디버그 information string이 너무 길다는 말...

해결책은
#pragma warning(disable: 4786)
추가하는것.

다들 VC++6의 구현상 문제라며 신경안써도 된다네

2006/04/13

Performancing tool

Firefox에서 쉽게 blog에 글을 올리는 툴이랍니다.
잘 되나요???