到__FUNCTION__請原諒我,如果我要問一個明顯的問題, 而是通過一堆線程去和嘗試的東西后,我沒能拖住這個簡單的事情。追加一個字符串在宏
我有這個小程序:
#define FUNC_PREFIX __FUNCTION__ "() :"
int main()
{
printf("%s\n", FUNC_PREFIX);
return 0;
}
所以我可以通過FUNC_PREFIX
,而不是__FUNCTION__
登錄功能,它們將打印調用函數名後加括號和冒號 - 這樣來提高日誌行的可讀性輸出。
編譯沒有作爲,是在Visual Studio 2008中 但在g++
,我得到的字符串常量之前預期「)」錯誤
我試着像做了幾件事情:
#define TEMP __FUNCTION__
#define FUNC_PREFIX TEMP "() :"
但無濟於事。
這樣做的方式是什麼?
如果記錄代碼知道它是通過一個函數名,正確的地方加入括號和結腸是日誌代碼。如果日誌記錄代碼不知道它正在獲取函數名稱,那麼您可能需要的信息不僅僅是函數名稱,還可以將其格式化爲包含括號。請注意,使用'#define FUNC_PREFIX __func __,「():」'接受的答案不能用於除'printf'-family函數以外的許多地方。例如,'strcpy(buffer,FUNC_PREFIX)'不會編譯,但'strcpy(buffer,(FUNC_PREFIX))'會 - 但它不會做你想要的。 –