我想在C++中concordate __ func__和文字字符串,并且在GCC(有或没有C++ 11标准)上出现错误。例如,像这样:C++ Concatinating __func__和常量字符文字
#include <cstdio>
int main(void)
{
printf("%s", __func__ " try #1\n");
printf(__func__ " try #2\n");
return 0;
}
看起来像__ func__实际上不是字符串文字宏。有谁知道为什么会发生这种情况,也许有办法解决它?
当然'__func__'不是一个哑字符串宏。 “%s%s”有什么问题?另外使用合适的C++工具有什么问题,比如'std :: string'和'std :: cout'? – Griwes 2014-12-04 14:00:11
@Griwes“当然”?考虑到'__FILE__'和'__LINE__' *是宏,我可以理解OP为什么会认为'__func__'也是。 – hvd 2014-12-04 14:01:37
'printf(“%s try#1 \ n”,__func__)'有什么问题?您尝试执行的编译时级联的类型仅适用于字符串文本(即常量字符串)。 – 2014-12-04 14:02:43