2013-06-10 2 views
10

я преобразовал некоторые Fortran кода на C. Мне было интересно, если кто-то может помочь мне решить следующую задачу:Автоматически исправлять недостающую скобку в C

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

Я знаю, что это предупреждение вызвано синтаксисом, как это:

A || B && C 

Что должно быть написано как:

A || (B && C) 

Мой компилятор может компилировать код си nce & & имеет более высокий приоритет, чем || поэтому он просто представляет круглые скобки.

Проблема в том, что это предупреждение происходит примерно в 30 000 раз, так как я работаю над большим проектом.

Есть ли какой-либо инструмент, который может автоматически вставлять круглые скобки вокруг всех & &?

+4

Если вы хотите быть абсолютно уверенным, я боюсь, что вам нужно будет реализовать парсер кода C, чтобы достичь этого ... – Spook

+0

Действительно? 30.000 раз? Сколько строк у вас есть? Или такое же предупреждение отображается несколько раз из-за заголовков, которые входят в различные модули? Тогда стоимость изменения материала вручную может быть не так уж плоха. –

+4

Как вы преобразовали из Fortran в C? Похоже, вам нужно исправить этот шаг. –

ответ

3

Как уже говорили другие делают это вручную, также вы можете отключить это предупреждение, используя -Wno-parentheses, несмотря на то, что это довольно опасно

+5

не опаснее автоматического добавления скобок без изучения кода. – agentp

0

Выключите глупые предупреждения. A || B && C делает не скобки, не более A + B * C. Если вы не потрудились узнать, как работают логические выражения ...

 Смежные вопросы

  • Нет связанных вопросов^_^