Этикетки, которые определены в N1256 6.8.1 Обозначенные маркировки могут содержать только заявления.
Syntax
1 labeled-statement:
identifier : statement
case constant-expression : statement
default : statement
int ret = function(of, stuff);
является декларация, которая определена в N1256 6.7 декларациях и не является утверждением.
отчетность определены ниже в N1256 6.8 отчетности и блоков:
Syntax
1 statement:
labeled-statement
compound-statement
expression-statement
selection-statement
iteration-statement
jump-statement
compound-statement
так называемые блоки , который является 0 или более декларации и заявления, окруженные {}
.
expression-statement
- это нуль или одно выражение, определенное в N1256 6.5. Выражения, за которыми следует точка с запятой, как i++;
. Выражение в синтаксисе определено в N1256 6.5.17 Оператор запятой.
selection-statement
является if
и switch
заявление.
iteration-statement
является while
, do-while
и for
заявление.
jump-statement
является goto
, continue
, break
и return
заявление.
Как вы видите, объявления не являются утверждением, поэтому вы не можете помещать метки в объявления.
«Возможно, кто-то встанет на защиту стандарта C, чтобы утверждать, что это имеет смысл» - ну, вы наверняка пришли в нужное место. –
Почему эти близкие голоса ...: -S - справедливый вопрос, который я до сих пор помню очень хорошо ...:-) – alk
Видимо, вопросы о языке программирования не о программировании? –