我在一个复杂的文件中看到一些非常奇怪的错误,我怀疑我有一些包含命名空间的东西,或类似的东西。 我无法将某些文件编译为可执行状态。
要弄清问题是什么,我想打印当前的命名空间。我认为使用__func__
(自C ++ 11以来可用)或__PRETTY_FUNCTION__
之类的东西我会很好,但我无法打印它。
我不能将它直接包含在#pragma message(__func__)
中(“警告:在#pragma message之后需要一个字符串”),并且字符串化没有帮助,所以,如果我使用这段代码:
#define STR_(x) #x
#define STR(x) STR_(x)
void fooMessage() {
#pragma message(STR(__func__))
}
除了字符串"__func__"
之外,我无法打印任何内容。它似乎适用于__LINE__
,但它对我想要做的事情没有用...
有没有办法让pragma消息从clang和/或gcc编译器打印完整的函数名(或知道当前的命名空间)?
我尝试过的一些内容可用here