【发布时间】:2012-11-20 17:34:32
【问题描述】:
我是初学者,如果我违反了任何规则,敬请见谅。这是我的问题。
我在 Codeblocks 上使用 GCC 编译器,我注意到特定的 sn-p 代码有一些特殊之处。我希望有人可以对此有所了解。
int main()
{
Tree *t;
//some operations on the tree
traverse();// No parameter is passed here.
...
}
void traverse(Tree *t)
{
..
}
在以下代码中,函数 traverse() 正确执行。我的问题是为什么?我不确定这一点,但是如果未声明函数,则其默认类型将变为 int。现在,编译器不仅在编译时抑制了错误,而且还正确地为函数 traverse() 提供了参数“t”。
这是因为智能编译器设计吗?
所以总的来说:我的问题是 - 如果编译器遇到尚未声明的方法,它会默认采取什么行为?更重要的是,它如何“知道”我要传递哪个参数?
就您所知,我可以拥有三个“树 *”实例:t1、t2 和 t3。那么编译器会通过哪一个呢?
我尝试在 Google 上四处查看,但尚未找到确定的来源。
感谢您的宝贵时间。 :)
【问题讨论】:
-
这是不正确的,“有效”只是偶然。 C 没有默认参数。
标签: c gcc compiler-construction