从编译器输出

时间:2017-12-19 19:19:58

标签: c++ gcc namespaces clang pragma

我在一个复杂的文件中看到一些非常奇怪的错误,我怀疑我有一些包含命名空间的东西,或类似的东西。 我无法将某些文件编译为可执行状态。

要弄清问题是什么,我想打印当前的命名空间。我认为使用__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

0 个答案:

没有答案