2013-06-10 8 views
10

ich einige Fortran-Code nach C konvertiert Ich frage mich, wenn mir jemand das folgende Problem zu lösen helfen könnte:automatisch korrigieren fehlende Klammer in C

warning: suggest parentheses around ‘&&’ within ‘||’ [-Wparentheses] 

Ich weiß, dass diese Warnung durch Syntax wie folgt verursacht wird:

A || B && C 

Welche geschrieben werden sollte:

A || (B && C) 

Mein Compiler ist in der Lage, den Code zu kompilieren si nce & & hat eine höhere Priorität als || so stellt es sich nur die Klammern vor.

Das Problem ist, dass diese Warnung etwa 30.000 Mal auftritt, seit ich an einem großen Projekt arbeite.

Gibt es ein Werkzeug, das die Klammer automatisch um alle & & einfügen kann?

+4

Wenn Sie absolut sicher sein wollen, habe ich Angst, dass Sie einen C-Code-Parser implementieren müssten, um dies zu erreichen ... – Spook

+0

Wirklich? 30.000 mal? Wie viele Zeilen hast du projektiert? Oder wird dieselbe Warnung aufgrund von Headern, die von verschiedenen Modulen enthalten sind, mehrmals angezeigt? Dann sind die Kosten für die Änderung des Materials von Hand vielleicht nicht so schlecht. –

+4

Wie haben Sie Fortran in C konvertiert? Klingt so, als müsste man diesen Schritt korrigieren. –

Antwort

3

Wie andere gesagt haben, sie manuell, können Sie auch diese Warnung deaktivieren -Wno-parentheses verwenden, obwohl das ist ziemlich gefährlich

+5

nicht gefährlicher als automatisch Klammern hinzufügen, ohne den Code zu studieren. – agentp

0

dumm Warnungen ausschalten. A || B && C tut nicht brauchen Klammern, mehr als A + B * C tut. Es sei denn, Sie haben sich nicht die Mühe gemacht zu lernen, wie logische Ausdrücke funktionieren ...