bin*_*bob 8 c++ windows compiler-construction macos gcc
当我使用__FUNCTION__宏/变量打印出调试信息时,使用Microsoft C++编译器和gcc时输出的内容似乎有所不同.例如,使用以下简单代码:
class Foo
{
public:
void Bar(int a, int b, int c)
{
printf ("__FUNCTION__ = %s\n", __FUNCTION__);
}
};
int main (void)
{
Foo MyFoo;
MyFoo.Bar();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我得到了使用Microsoft Visual C++编译器
__FUNCTION__ = Foo::Bar
Run Code Online (Sandbox Code Playgroud)
而在使用gcc编译时(在本例中是在Mac上),我得到了
__FUNCTION__ = Bar
Run Code Online (Sandbox Code Playgroud)
第二个例子并不理想,因为我经常有几个类,比方说Init()和Uninit()方法,并且在调试输出跟踪中,几乎不可能知道哪个类被调用,因为类名将丢失.现在,我知道你可以使用__PRETTY_FUNCTION__代替它__FUNCTION__来获得类似的东西
__PRETTY_FUNCTION__ = void Foo::Bar(int, int, int)
Run Code Online (Sandbox Code Playgroud)
这很好,但它对于我需要的东西有点过于冗长,并且对于具有大量参数的函数来说有点长.
所以我的问题是(最后),有没有办法让输出看起来像简单地Foo::Bar使用gcc,如上例所示?