TRACE 정보를 표시하는 간단한 매크로를 작성하고 있습니다.토큰 붙여 넣기 및 __LINE__
이 내가 사용하고 무엇을,
#ifdef __DEBUG__
#define TRACE { PrintErrorMsg("Trace exception at " __FILE__ "LineNo:"##(__LINE__) "Function: " __FUNCTION__ " ");}
#else
#define TRACE
#endif
이 FILE와 함께 일하고있다, 그러나 LINE, 나는이 다룰 수있는 방법을 어떤 생각으로 작동하는 것 같다하지 않습니다. 나는 이미 문자열 연산자도 시도했다. 어느 쪽이 노예 같은가.
#ifdef __DEBUG__
#define TRACE { PrintErrorMsg("Trace exception at " __FILE__ "LineNo:"#(__LINE__) "Function: " __FUNCTION__ " ");}
#else
#define TRACE
#endif
및 PARMS없이 두 번 PARMS, 예와
-__LINE__
또는
((__LINE__))
나는이 문제를 해결 수있는 방법을 어떤 생각?
은 내가
#ifdef __DEBUG__
#define ERROR_MSG_BUF_SIZE 1024
#define TRACE { char * error_msg_buffer = new char[ERROR_MSG_BUF_SIZE]; \
sprintf(error_msg_buffer,"Trace Exception at file: %s ,Line : %d , Function %s \n",__FILE__,__LINE__,__FUNCTION__);\
PrintErrorMsg(error_msg_buffer);\
delete[] error_msg_buffer;}
#else
#define TRACE
이 마련하지만 난 그냥 단지 모인 토큰 붙여 넣기하여 sprintf를 사용하지 않고 그것을 할 싶어. 아이디어가 있으십니까?
#endif
--Thanks는 advance--
왜 괄호가'__LINE__ '주위에 있습니까? –
'_'에만 국한되지 않으므로 '__LINE__'에 모두 속하기 때문입니다. 내가 이것을 참조하기 때문에 : http://stackoverflow.com/questions/9454973/token-pasting-does-not-seem-to-be-working-with-c-macros –
음,'__LINE__' 토큰입니다. 당신은'#__ LINE__'을 원합니다. –