現在の印刷レベルセットに応じて、ファイル/行番号をエラーメッセージとともに印刷するカスタムprintfを作成しようとしています。同じマクロを定義しました。以下は、プリプロセッサのコードです。
#define DIE (s) \
printf(s); \
exit(0); \
#define my_print(level,s) \
if(level <= gPrintLevel) \
{ \
char *buffer = (char *)malloc(strlen(s)-1); \
if (NULL != buffer) \
{ \
sprintf(buffer,s); \
printf("[%s][%d]:%s\n",__FUNCTION__,__LINE__,buffer); \
if (level == fatal) \
{\
DIE(s);\
}\
} \
} \
関数内から次のように上記のプリプロセッサを呼び出しています。
myPrint(2,"Unexpected error encountered\n");
しかし、コンパイルしようとすると、以下のコンパイル エラーが発生します。
41: error: ‘s’ was not declared in this scope
助けてください、私は何を間違っていますか? また、上記のように印刷ステートメントをカスタマイズするよりエレガントな方法があるかどうかを教えていただければ幸いです。前もって感謝します。