Отличие меток в C и C++

Почему эта программа не компилируется в C++, но компилируется в C? https://godbolt.org/z/KsEs3zaK6

int main(){_:}

error: expected primary-expression before '}' token


Ответы (1 шт):

Автор решения: Ariox

Потому что в стандарте C++ метки определены как

attr(optional) identifier : statement

а в C как

attr-spec-seq(optional)(since C23) identifier :

Т.е. в C++ после метки должно быть любое выражение, например:

int main(){  _: {} }

Предполагаю, нужно это из-за возможной неопределенности при использовании ::.

→ Ссылка