Ich schaue mir einen Beispielcode für eine API an, die ich gerade benutze. Das folgende Muster hat mich ein wenig verwirrt:Gibt es einen Grund, const_cast in einem String-Literal in diesem Code zu verwenden?
char* str;
str = const_cast<char*>("Hello World");
printf("%s ", str);
(. Tatsächlich gibt es einen großen Fall Erklärung, in der str
jeweils zugeordnet ist)
Beachten Sie, dass printf
nimmt const char*
. Gibt es einen vernünftigen Zweck für diese gewundene Umwandlung? Die Autoren dieses Codes wenden viele andere leistungsorientierte Tricks an, aber es gibt keine Erklärung dafür, was hier vor sich geht.
Mein Instinkt ist es, diesen Code zu ändern:
const char* str;
str = "Hello World";
printf("%s ", str);
Bin ich etwas fehlt?
Ändern Sie es. Der ursprüngliche Code ist gefährlich nah an undefiniertem Verhaltensland. –
Yeah 'puts' macht nicht dasselbe. Warum sollte "Put" in anderen Situationen die bessere Wahl sein? –
@ValekHalfHeart Oh, ja, das war Unsinn, vergiss es. – Columbo