我需要自动将方法名称添加到某些日志消息中。我一直在使用__FUNCTION__
来做它,但它生成了方法的完全限定名(namespace :: class:method)。因此它浪费了大量空间并使日志的可读性降低。有没有办法只在MACRO中附加方法名称,没有任何不必要的限定符?
答案 0 :(得分:1)
如果您的日志记录代码如下所示:
#define LOGCALL \
clog << "Called " << __FUNCTION__ << endl;
然后您可以简单地编写一个全局函数来根据需要修剪函数名称并说:
#define LOGCALL \
clog << "Called " << MyTrim( __FUNCTION__ ) << endl;
答案 1 :(得分:1)
编写一个带有char *参数的函数,并返回一个指向函数名的指针。 然后写
MyFunction(FUNCTION)
而不是
FUNCTION
这样做的好处是可以在短名称和长名称之间动态切换。