Отличие меток в 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(){ _: {} }
Предполагаю, нужно это из-за возможной неопределенности при использовании ::.