не компилируется в C, хотя компилируется как программа C ++. Однако если после метки поместить нулевой оператор, программа компилируется. <, / P>
смущен, когда это не скомпилируется в C:
int main()
{
for (int i = 0; i < 4; ++i)
int a = 5; // A dependent statement may not be declaration
return 0;
}
Я привык к C ++, где это будет компилироваться. Я просто какое-то время удивлялся, пока не вспомнил ответ здесь на SO о том, как в C и C ++ разные вещи считаются «утверждениями». Это было в отношении заявления переключения. «Оператор» после скобок цикла for должен присутствовать как в C, так и в C ++. Это можно сделать либо добавив точку с запятой, либо создав квадратный блок скобок {}.
В C ++ "int a = 7;" считается объявлением, определением и инициализацией. В C я считаю, что это также считается все это, однако в C это не считается "заявление".
Может кто-то точно уточнить, почему в C это не утверждение, а в C ++ это? Это сбивает с толку мою концепцию того, что такое утверждение, потому что один язык говорит, что это так, а другой говорит, что это не так, поэтому я немного растерялся.