功能原型在主要或主要在C之前

时间:2011-10-05 05:06:02

标签: c

C中的函数原型应该在main还是main之前。我在主教学之前就被教过,但是我的朋友课本主要用它来表示。哪种方法正确?

他的书显示了它:

int main()
{
    void numberTable();

    numberTable();
}

void numberTable()
{
    int num;
    ...rest of the code...
}

5 个答案:

答案 0 :(得分:12)

两者都是正确的。
如果在main中添加函数声明,则其作用域位于主{ }内 如果将它添加到main之外,则其范围是整个源文件。

答案 1 :(得分:3)

可以两种方式。但是如果你在main之外声明,那么你可以访问代码中的任何地方,在其他情况下,它的范围在main之内。

答案 2 :(得分:2)

在main之前定义函数的原因是为了避免在main之后定义函数时必需的函数声明。 C模块以这种方式编码是很常见的,即:依赖顺序定义的函数,以避免需要声明范围内的本地函数(我们应该小心如何在这里使用单词范围 - 范围不是由C链接器强制实施的。)

答案 3 :(得分:1)

无论哪种方式都可以使用。 main()之外的声明(或更常见的是,在任何函数之外)通常会导致重复次数减少。

main()内声明函数时,该声明仅适用于main()。如果某个其他函数(例如function_1())也调用相关函数(例如numberTable())并在定义其他函数之前出现,那么您必须在numberTable()内声明function_1()同样(违反DRY:不要重复自己,以及SPOT:单点真相)。另一方面,如果numberTable()的声明在任何函数之外并且在文件中的任何函数之前,那么所有函数都可以使用一个声明。

如果涉及多个源文件,则规则会变得更简单。所有可从其他文件调用的函数都应在标题(header.h)中声明。该标头应包含在引用标头中声明的任何函数的每个文件中,也应包含在定义标头中声明的每个函数的每个文件中。标题应包含在使用它的文件中的任何函数之外。 (C标准要求标准头文件。)这可以确保所有代码都具有一致的每个函数声明视图。最终,您将获得足够大的程序,甚至可能有多个标题。适用相同的基本规则 - 在标题中声明函数;包括使用和定义函数的头文件(在任何函数之外)。 (另见What are extern variables in C。)

答案 4 :(得分:1)

两者都是正确的;然而,它在现实中并不是一种好的风格。
一个常见的良好做法:将所有这些函数声明和定义放在其他标题和源文件中:header.h + header.c