有指針菜單函數怎么寫函數名?
#include <cstdio>
//定義打印宏,并在打印信息前加入文件名、行號、函數名
//此宏展開后,類似于printf("123"),printf("456");
#define TRACE_CMH_1 (printf("%s(%d)-<%s>: ",__FILE__, __LINE__, __FUNCTION__), printf)
//此宏展開后,類似于printf("%d""%d", 1, 2);
#define TRACE_CMH_2(fmt,...) \
printf("%s(%d)-<%s>: "##fmt, __FILE__, __LINE__, __FUNCTION__, ##__VA_ARGS__)
//注:由于第一個宏TRACE_CMH_1調用了兩次printf,所以效率沒有第二個宏高。
//如果編譯器支持C99標準的話,可以用第二個宏。
int count = 1;
class CBase
{
public:
CBase()
{
//打印當前行所在文件、行號、函數,以及其它信息。
TRACE_CMH_2("BASE: [%d]\n", count++);
}
};
class CSub : public CBase
{
public:
CSub()
{
//打印當前行所在文件、行號、函數,以及其它信息。
TRACE_CMH_1("SUB: [%d]\n", count++);
}
};
int main(int argc, char **argv)
{
CSub sub;
return 0;
}
參考一下