Действительно ли требуется ошибка "с точкой с запятой"? Почему бы не рассматривать это как предупреждение?
Когда я компилирую этот код
int f = 1
int h=2;
компилятор разумно сообщает мне, где я его не хватает. Но мне это нравится: "Если вы это знаете, просто относитесь к нему так, как если бы он был там, и вперед. (Позже я могу исправить предупреждение.)
int sdf = 1, df=2;
sdf=1 df =2
Даже для этого кода он ведет себя одинаково. То есть, даже если несколько операторов (без;) находятся в одной строке, компилятор знает.
Итак, почему бы просто не удалить это требование? Почему бы не вести себя как Python, Visual Basic, и т.д.
Резюме обсуждения
Два примера/экземпляры отсутствовали, а полуколония действительно вызовет проблему.
1.
return
(a+b)
Это было представлено как один из худших аспектов JavaScript. Но в этом случае вставка с запятой является проблемой для JavaScript, но не
для С++. В С++ вы получите еще одну ошибку, если вставка ;
будет выполнена после возврата. То есть отсутствует возвращаемое значение.
2
int *y;
int f = 1
*y = 2;
Для этого я думаю, что нет лучшего способа, чем ввести в качестве разделителя операторов, то есть точка с запятой.