Разрыв строки означает что-то в C / C ++? - PullRequest
3 голосов
/ 07 февраля 2011

Я объединяю две ветви программного обеспечения, и в процессе объединения некоторый код остается таким:

if (b_flag)
 DoSomething();
 //MERGE
else
 //ENDMERGE
  DoOtherThing();

Видите отключение блока if / else? Это работает как предполагалось сделать? Компиляторы учитывают разрывы строк?

Ответы [ 4 ]

7 голосов
/ 07 февраля 2011

Да, это будет работать так, как должно. Если у вас есть if или else без фигурных скобок ({}), следующий оператор рассматривается как тело оператора if. Вставка разрывов строк или комментариев не меняет того факта, что DoSomething (); или DoOtherThing (); эти заявления.

6 голосов
/ 07 февраля 2011

Несмотря на то, что комментарии эффективно обрабатываются как пробелы, они будут работать так, как будто «должны». Однако вам, вероятно, следует добавить фигурные скобки в этот код, прежде чем что-то пойдет не так.

В конце концов, с дополнительными комментариями, человек пропустит оператор else, или, что еще хуже, дополнительный оператор будет добавлен к блоку if, а оператор else внезапно станет оператором else для некоторого более высокого оператора if, не хватает еще.

Хорошим стилем является принудительное включение фигурных скобок во всех случаях, кроме самых простых.

2 голосов
/ 07 февраля 2011

Новая строка не отличается от пробела или табуляции. Кстати, комментарии не считаются утверждениями - они просто игнорируются компилятором.

Редактировать: новая строка имеет значение только в директиве препроцессора C, такой как #define.

1 голос
/ 07 февраля 2011

Это работает точно так же, как если бы использовались фигурные скобки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...