在宏中生成方法名称

时间:2010-06-17 13:45:33

标签: c++ macros

我需要自动将方法名称添加到某些日志消息中。我一直在使用__FUNCTION__来做它,但它生成了方法的完全限定名(namespace :: class:method)。因此它浪费了大量空间并使日志的可读性降低。有没有办法只在MACRO中附加方法名称,没有任何不必要的限定符?

2 个答案:

答案 0 :(得分:1)

如果您的日志记录代码如下所示:

#define LOGCALL \
    clog << "Called " << __FUNCTION__ << endl;

然后您可以简单地编写一个全局函数来根据需要修剪函数名称并说:

#define LOGCALL \
    clog << "Called " << MyTrim( __FUNCTION__ ) << endl;

答案 1 :(得分:1)

编写一个带有char *参数的函数,并返回一个指向函数名的指针。 然后写

MyFunction(FUNCTION)

而不是

FUNCTION

这样做的好处是可以在短名称和长名称之间动态切换。