Ich arbeite an einem äußerst großen Codebasis und habe kürzlich auf GCC 4.3 aktualisiert, was jetzt diese Warnung auslöst:
Warnung: veraltete Konvertierung von String-Konstante zu 'char*'
Offensichtlich ist der richtige Weg, um dies zu beheben, jede Deklaration wie
char *s = "Konstante Zeichenfolge";
oder Funktionsaufruf wie:
void foo(char *s);
foo("Konstante Zeichenfolge");
und sie zu const char
Zeigern zu ändern. Allerdings würde das bedeuten, dass ich mindestens 564 Dateien berühren müsste, was keine Aufgabe ist, die ich zu diesem Zeitpunkt ausführen möchte. Das Problem im Moment ist, dass ich mit -Werror ausgeführt werde, also brauche ich eine Möglichkeit, um diese Warnungen zu unterdrücken. Wie kann ich das machen?
2 Stimmen
Wenn Sie sich daran machen, 554 Zeilen zu ersetzen, ist sed ein guter Freund. Stellen Sie jedoch sicher, dass Sie zuerst ein Backup erstellen.
2 Stimmen
Ich habe mir die Diskussionen darüber angesehen, wie man die Fehlermeldungen unterdrücken kann und was die korrekten Ersatzwerte sein sollten. Ich habe keine Meinung dazu. Ich denke jedoch, dass Matt auf dem richtigen Weg ist. Definieren Sie, was Sie durch was ersetzen möchten. Sie benötigen nur die richtigen regulären Ausdrücke. Machen Sie die Änderungen in einer Kopie. Verwenden Sie "diff", um sie mit dem Original zu vergleichen. Das Ändern mit sed ist schnell, einfach und kostenlos, diff ist ebenfalls schnell, einfach und kostenlos. Probieren Sie es aus und sehen Sie, wie viele Änderungen Sie überprüfen müssen. Geben Sie an, was Sie durch was ersetzen möchten, und lassen Sie die Benutzer Regex-Ersatzwerte vorschlagen.
0 Stimmen
Die gesamte Diskussion verfehlt den Punkt, warum dieses Problem überhaupt gelöst werden muss, laut der gcc-Warnung. Der Grund steht in David Schwartz' Antwort stackoverflow.com/questions/56522654/….
0 Stimmen
564 Dateien sind vollständig machbar. Einfach machen. (Nun, höchstwahrscheinlich haben Sie es jetzt bereits getan ;-) ).