Я думаю, из заголовка этого вопроса "После точки с запятой другая команда и она компилируется", что вы думаете, что в строке может быть только одна команда / оператор?
Как вы заметили, это неверно. C ++ и C являются языками свободной формы (что означает, что вы можете расположить символы любым удобным для вас способом). Точка с запятой - это просто терминатор оператора.
Вы можете написать foo();bar();
или
foo();
bar();
Обе (и более) договоренности в порядке. Кстати, это особенность, а не ошибка. Некоторые языки (Python, ранний Fortran) не имеют этого свойства.
Как правильно отметили другие, ваше конкретное утверждение - это бездействие, утверждение без какого-либо эффекта. Некоторые компиляторы могут предупредить вас об этом, но ни один компилятор не предупредит вас о нескольких операторах в одной строке.