我正在查看this page说:
在C ++中,您可以在程序中的任何位置声明变量。 C不是这种情况。必须在函数的开头声明变量,并且必须在任何其他代码之前声明变量。这包括循环计数器变量,这意味着不能执行此操作:
for(int i = 0; i < 200; i++) {
忘记你不能在任何地方声明变量就是其中之一 “它不会编译”问题的最常见原因 程序员从C ++迁移到C。
我已经使用Objective-C了一段时间,因此C,我对for(int i = 0; i < 200; i++) {
之类的语句没有问题,而Objective-C 是 C,严格来说那么这个网页是指什么?
答案 0 :(得分:6)
网页不准确表征C89。
在C89中,您可以在任何块的顶部声明变量(不仅仅是在函数的开头),而不是在块中的任何时刻。
在C99及更高版本中,您不必在块的开头声明变量。具体来说,C99允许你写:
for (int i = 0; i < max; i++)
如果您使用GCC但需要保持与MSVC的兼容性,那么您可以使用-Wdeclaration-after-statement
来检测何时在语句之后声明变量(C89不允许)。
目标C可能使用C99而不是C89作为其扩展的标准,因此它允许在需要时进行变量声明。