Lap*_*try 0 c++ macros function
我试图在C++中连接__ func__和文字字符串,我在GCC上遇到错误(有或没有C++ 11标准).比如,例如,这里:
#include <cstdio>
int main(void)
{
printf("%s", __func__ " try #1\n");
printf(__func__ " try #2\n");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
看起来__ func__实际上不是字符串文字宏.有谁知道为什么会这样,也许,解决它的方法?
__func__确实既不是字符串文字,也不是宏.它的规范来自C++ 11 8.4.1/8
函数本地预定义变量
__func__定义为表单的定义
static const char __func__[] = "function-name ";
Run Code Online (Sandbox Code Playgroud)
已经提供
因此,您必须将其视为静态数组,而不是字符串文字; 特别是,你不能将它与其他文字连接起来.
printf("%s%s", __func__, " try #1\n");
printf("%s try #2\n", __func__);
std::string message = __func__ + std::string(" try #3");
Run Code Online (Sandbox Code Playgroud)