调用函数后定义变量会给我一个编译错误

时间:2017-04-18 02:44:49

标签: c turbo-c

这有效

main()
{
   int c;
   struct books Book1;
   c = getchar( );
   return 0;
}

这不是

main()
{
   int c;
   c = getchar( );
   struct books Book1;
   return 0;
}
  

函数main中的表达式语法(并指向单词' struct'之后的空格)

这不是因为B的定义低于c = getchar();,错误指向" int"之间的空间。和" b"

main()
{
   int c;
   struct books Book1;
   c = getchar( );
   int b;
   return 0;
}

问题是我必须在调用函数之前定义每个变量,还是其他的?

这是C的工作方式,还是turbo C的东西?

编辑:在意识到我打算说"定义"后发现重复。不是"声明"

1 个答案:

答案 0 :(得分:4)

在C89中,变量必须在块的开头声明。自C99以来,该限制被删除。

Turbo C,一个过时的编译器,不支持这个C99功能,这并不奇怪。