2017-10-16 3 views
2

Ich bin ein Warnunggcc mehrzeiliger Kommentar Warnung

bekommen

Warnung: mehrzeiligen Kommentar [-Wcomment]

aufgrund einer Bemerkung, die ich, dass haben in etwa so aussieht

// strings can start with a \ and also end with a \ 

Ich verstehe den Fehler und habe andere SO-Nachrichten zum Thema gesehen.

Ich kann die Warnung leicht reparieren (durch das doppelte Zitat der \ s).

Was ich neugierig bin ist, dass ich darauf geachtet habe, dass die Linie nicht endet mit einem \. Die Zeile endet mit \ und dann einem Leerzeichen. Ist dies der Präprozessor, der meinen nachgestellten Raum streift und dadurch die Warnung einführt?

+0

Sie können '...' am Ende des Kommentars hinzufügen, oder verwenden Sie '' \ ''statt nur \ –

+0

fügen Sie einfach ein Zeichen nach dem endgültigen \ – Indent

+0

@Indent Das Problem zu beheben ist einfach, aber Ich würde gerne verstehen, was vor sich geht. –

Antwort

3

Während der initial processing Präprozessor führt eine Reihe von Textumwandlungen auf seiner Eingabe.

Hier ist das Zitat aus der Dokumentation (relevant Stück in fett):

Fortsetzung Linien in einer langen Linie zusammengeführt werden.

Eine fortgesetzte Zeile ist eine Zeile, die mit einem Backslash endet,. Der umgekehrte Schrägstrich wird entfernt und die folgende Zeile wird mit der aktuellen verknüpft.

...

Der Backslash auf einer fortgesetzten Zeile bezeichnet wird allgemein als ein Backslash-Newline.

Wenn zwischen einem Backslash und dem Ende einer Zeile Leerraum ist, ist das immer noch eine fortgesetzte Zeile. Da dies jedoch in der Regel auf einen Bearbeitungsfehler zurückzuführen ist und viele Compiler es nicht als fortlaufende Zeile akzeptieren, wird GCC Sie davor warnen.

In diesem Fall ist es am besten zu verwenden '\' statt \ als Backslash als Symbol verwendet wird und nicht als Fortsetzung Zeilenanzeige. Eine andere (subjektiv minderwertige) Option besteht darin, nach \ (z. B. einem Punkt) ein abschließendes Nicht-Leerzeichen einzufügen.

+0

Danke für den Link und die Details. Für Informationen clang und icc tun Sie das gleiche, aber keine Warnung von MSVC. –