我在我的代碼,一個警告,讓我發瘋了:糾正「格式字符串不是一個字符串常量」警告
int vasprintf_wrapper(char** bufptr, const char* fmt, va_list ap)
{
// Do stuff...
// ...
return vasprintf(bufptr, fmt, ap);
}
鏘(3.6.0),抱怨與「格式字符串不是一個字符串文字「,指的是被轉發的fmt
參數。
天真,我想:
return vasprintf(bufptr, reinterpret_cast<const char[]>(fmt), ap);
這當然不能編譯。
我該怎麼辦?完全禁用警告不是一種選擇。我想要警告。但在這種情況下,我想告訴編譯器,我知道自己在做什麼(「有名的遺言」旁邊的笑話......)
可能,我不是100%肯定的,但我不明白這是一個有效的CONSTANT,因爲你傳遞了一個變量(所以它不能成爲一個合適的賦值)。您是否嘗試刪除該部分? –
@DavyC你的意思是演員?是的,同樣的結果有或沒有'const'。 –