【发布时间】:2020-04-14 14:24:58
【问题描述】:
既然我们在这个变量声明之后调用这个函数,为什么我们需要在函数定义和声明之前声明全局变量?不是编译器逐行读取吗?我的意思是在调用函数时编译器应该知道 x 是什么。
void function()
{
x += 3
}
int x = 3;
int main(void)
{
function();
return 0;
}
还有一个问题。我知道我们可以在 main 函数之后定义函数,前提是我们在 main 之前声明了这个函数。那么main函数是如何在main函数之后看到这些函数的呢?编译器是否首先读取整个文件然后运行 main() 或某事?
【问题讨论】:
-
您是否混淆了编译器和解释器?
-
你回答了你自己的问题。编译器逐行读取。如果遇到
x,并且没有被声明或定义,就会报错。 -
如果编译器遇到未定义的东西,编译器必须通过前向声明知道它,否则就是错误。
-
您将 C 与一些脚本语言混为一谈。变量不是在运行时而是在编译时定义的。函数
function必须是可编译的,无需了解调用者的任何信息或之后可能解析的任何代码。 -
@Gerhardh 我是这么认为的,在 Python 中这行得通……我感到很困惑
标签: c