ich eine Warnung in meinem Code haben, der mich treibt verrückt:"Format-String ist kein Stringliteral" Korrektur der Warnung
int vasprintf_wrapper(char** bufptr, const char* fmt, va_list ap)
{
// Do stuff...
// ...
return vasprintf(bufptr, fmt, ap);
}
Clang (3.6.0), beschwert mit „Format-String ist kein String Literal ", bezogen auf das Argument fmt
, das weitergeleitet wird.
Naiv, habe ich versucht zu:
return vasprintf(bufptr, reinterpret_cast<const char[]>(fmt), ap);
Was natürlich nicht kompilieren.
Was mache ich? Das Deaktivieren der Warnung ist keine Option. Ich möchte die Warnung haben. Aber in diesem Fall möchte ich dem Compiler mitteilen, dass ich weiß, was ich mache ("berühmte letzte Worte" scherzt beiseite ...)
Möglicherweise, und ich bin nicht 100% sicher, aber ich sehe nicht, wie dies eine gültige Konstante sein kann, wie Sie eine Variable übergeben (so kann es keine cosnant Zuweisung sein). Hast du versucht, diesen Teil zu entfernen? –
@DavyC Du meinst die Besetzung? Ja, das gleiche Ergebnis mit oder ohne 'const'. –