1

刚刚在 uni 进行了“编程基础”讲座,并被告知使用/声明函数的约定是将main()函数放在程序的顶部,函数/过程在其下方,并使用前向声明来防止编译器错误。

但是,我总是以另一种方式做到这一点 - 函数在顶部main(),而不是使用前向声明,并且我认为我从未见过它。

哪个是对的?还是更多的是个人喜好?一些澄清将不胜感激。

4

8 回答 8

11

由你决定。就我个人而言,我一直保持低调,main因为当我有其他功能时,它要么只是一两个其他小功能,要么是一个代码片段。

在实际代码中,您可能希望将您的项目拆分(在一个文件中有多个“不相关”的函数是不好的),因此文件中main可能几乎是单独存在的。你只需要让事情顺利进行并使用它们#includemain

于 2010-10-26T17:44:06.587 回答
6

当您的功能彼此相关时,可能会出现这种情况。如果您只是将它们写在main()没有前向声明的上方,则必须对它们进行排序,以便它们知道它们所依赖的功能。在某些情况下(循环引用),如果没有前向声明,甚至无法编译。

向前声明函数时,您不会遇到此问题。

此外,当具有main()第一个功能时,您将生成更具可读性的代码,但这可能只是个人喜好。
它也可能更具可读性,因为另一位编码员对他将在文件中找到的功能进行了概述。

于 2010-10-26T17:46:27.040 回答
3

如果有标准,那就是在包含的 .h 文件中包含函数声明。这样,文件中函数的顺序无关紧要。我几乎从不编写没有声明的函数,当其他人这样做时,我感到很吃惊。

于 2010-10-26T17:49:57.887 回答
3

大多数专业 C++ 开发人员使用的标准是这个。

  • 每个类有两个文件:头文件(例如,Class.h),它只声明所有类的数据成员和函数;和实现文件(在同一示例中名为Class.cpp),仅包含这些函数的实现。
  • 主要功能(如果您的解决方案有它)进入一个名为的文件,例如Main.cpp本身。

当您从事小型家庭或学校项目时,可以将多个课程甚至整个程序放入一个文件中。由于规模小,您如何订购类或函数并不重要。你可以做对你来说更方便的事情。但是,如果您的教授要求学生在作业中遵循某些代码标准(例如,将 main() 放在首位),那么您必须遵循这些标准。

于 2010-10-26T18:47:56.380 回答
2

这种方法很可能受到您的教授的青睐,并且很可能是她将其作为惯例教授的原因。这里有两个选择,顺其自然(即不要试图破坏并可能因为你的教授觉得你没有遵循“惯例”而被扣分)或向她解释——没有必要这样做这种方式(或任何其他方式),只要代码的意图是明确的!

于 2010-10-26T18:25:01.427 回答
0

声明(函数原型)的建议与 C 相关,然后与 C++ 相关,因为在 C++ 中没有隐式函数声明,因此您必须始终在使用前声明。因此,如果您有一个涉及多个函数的递归,那么您肯定会有至少一个未定义的函数声明。

对于一个小项目,使用你想要的任何风格,但要保持一致。对于一个大型项目,您可能需要几个 .cpp 文件并在头文件中定义接口(无论是类还是函数)。至少在单个文件中也要保持一致。

最后一件事,我说过要保持一致吗?

于 2010-10-26T17:45:53.637 回答
0

我通常使用第二种形式,因为您必须维护函数声明 - 它们必须具有正确的签名和名称,而且 imo,当您可以先定义函数时,它们只是过度输入。无需维护,无需浪费时间。

于 2010-10-26T18:40:33.237 回答
0

我认为这里适用的原则是“不要重复自己”。如果您使用前向声明,那么您就是在不必要地重复自己。

于 2010-10-26T19:34:35.770 回答