我想在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