Heim >Backend-Entwicklung >C++ >Wie gehe ich mit den veralteten GCC-Konvertierungswarnungen von String Constant zu „char*' um?

Wie gehe ich mit den veralteten GCC-Konvertierungswarnungen von String Constant zu „char*' um?

Susan Sarandon
Susan SarandonOriginal
2024-12-05 11:20:12609Durchsuche

How to Handle GCC's Deprecated Conversion Warnings from String Constant to `char*`?

So umgehen Sie Warnungen vor einer veralteten Konvertierung von String-Konstanten in „char*“

In GCC-Versionen vor 4.3 konnte man eine Variable mit einem char * deklarieren Geben Sie ein und weisen Sie ihm dann ein Zeichenfolgenliteral zu. GCC 4.3 und höher lehnen diese Vorgehensweise jedoch mit einer Warnung ab. Der richtige Weg, dies zu tun, besteht darin, die Variable als const char * zu deklarieren. Wenn Sie jedoch über eine große Codebasis verfügen und nicht alle Instanzen auf einmal reparieren möchten, gibt es eine Möglichkeit, die Warnungen zu unterdrücken.

Um diese Warnungen zu unterdrücken, ändern Sie den Typ aller Funktionen, an die Sie Zeichenfolgenliterale übergeben, von char * in const char *. Dies ist ohnehin die richtige Vorgehensweise. Wenn Sie also etwas reparieren wollen, dann reparieren Sie es richtig.

Der Grund für diese Ablehnung ist, dass String-Literale vom Typ const char * sind und das weggeworfen wird const, um sie zu ändern, ist undefiniertes Verhalten. Um eine Zeichenfolge zu ändern, müssen Sie die Zeichenfolge const char * Zeichen für Zeichen in eine dynamisch zugewiesene Zeichenfolge char * kopieren.

Hier ist ein Beispiel, wie man dies richtig macht:

#include <iostream>

void print(char* ch);

void print(const char* ch) {
    std::cout << ch;
}

int main() {
    print("Hello");
    return 0;
}

Das obige ist der detaillierte Inhalt vonWie gehe ich mit den veralteten GCC-Konvertierungswarnungen von String Constant zu „char*' um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn