「書式文字列が文字列リテラルではありません」修正:私は狂気私を運転している私のコードで警告持って警告
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%は確信していませんが、変数を渡すときにこれがどのように有効な定数になるかはわかりません(したがって、cosntantの代入はできません)。あなたはその部分を削除しようとしましたか? –
@DavyCあなたはキャストを意味しますか?うん、 'const'の有無にかかわらず同じ結果。 –