主函数中的函数原型?

时间:2014-07-03 23:48:07

标签: c function function-prototypes

据我所知,我们无法在另一个函数中声明一个函数。但我们可以在另一个函数中调用一个函数。

在main函数中,我们通常调用这样的函数:

int abc(int some)
{
  return x;
}

int main()
{
  int x = 10;
  abc(x); //calling function abc inside main function.
  return 0;
}

但是今天在查看示例代码时我看到了类似的内容:

int main()
{
  int abc(int x); // which compiled fine 
}

哪个有效,但我在这里试图理解的只是这些陈述的用途是什么?

  1. 我们无法在main函数中定义函数。
  2. 我们可以在main函数中调用函数。
  3. 但是这个看起来更像是一个函数原型,它也在c程序文件开头的所有函数之外声明。

2 个答案:

答案 0 :(得分:4)

这是一个范围问题。您可以在main中声明函数的原型。问题是它只能在主要内部调用,而不是在其他地方调用。并且函数的实际代码将在main method之外。

所以在你的第二个例子中,int abc(int x); 里面的 main,函数abc只能在main函数内调用。

答案 1 :(得分:1)

int abc(int x);声明确实是一个函数原型。虽然我们无法在main函数中定义函数,但我们可以告诉编译器一个函数存在于另一个函数中,这就是原型所做的。

虽然你肯定可以在函数内部声明一个函数,但这样做的实用程序肯定是有限的:C中的所有外部函数都属于全局命名空间(尽管它们的可见性仅限于封闭原型声明的范围),因此通常不需要在函数内隐藏原型。