变量声明必须预先出现?

时间:2012-11-16 04:58:45

标签: c++ objective-c c

我正在查看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,严格来说那么这个网页是指什么?

1 个答案:

答案 0 :(得分:6)

网页不准确表征C89。

在C89中,您可以在任何块的顶部声明变量(不仅仅是在函数的开头),而不是在块中的任何时刻。

在C99及更高版本中,您不必在块的开头声明变量。具体来说,C99允许你写:

for (int i = 0; i < max; i++)

如果您使用GCC但需要保持与MSVC的兼容性,那么您可以使用-Wdeclaration-after-statement来检测何时在语句之后声明变量(C89不允许)。

目标C可能使用C99而不是C89作为其扩展的标准,因此它允许在需要时进行变量声明。