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

Defining variables after calling functions gives me a compilation error

这个有效

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

这不是

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

Expression syntax in function main (and points to the space after the word 'struct')

这也不是因为 B 的定义在 c = getchar(); 下面,错误指向 "int" 和 "b"

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

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

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

编辑: 在意识到我的意思是 "definition" 而不是 "declaration"

后发现了重复项

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

Turbo C 这种过时的编译器不支持此 C99 功能也就不足为奇了。