刚刚在 uni 进行了“编程基础”讲座,并被告知使用/声明函数的约定是将main()
函数放在程序的顶部,函数/过程在其下方,并使用前向声明来防止编译器错误。
但是,我总是以另一种方式做到这一点 - 函数在顶部main()
,而不是使用前向声明,并且我认为我从未见过它。
哪个是对的?还是更多的是个人喜好?一些澄清将不胜感激。
刚刚在 uni 进行了“编程基础”讲座,并被告知使用/声明函数的约定是将main()
函数放在程序的顶部,函数/过程在其下方,并使用前向声明来防止编译器错误。
但是,我总是以另一种方式做到这一点 - 函数在顶部main()
,而不是使用前向声明,并且我认为我从未见过它。
哪个是对的?还是更多的是个人喜好?一些澄清将不胜感激。
由你决定。就我个人而言,我一直保持低调,main
因为当我有其他功能时,它要么只是一两个其他小功能,要么是一个代码片段。
在实际代码中,您可能希望将您的项目拆分(在一个文件中有多个“不相关”的函数是不好的),因此文件中main
可能几乎是单独存在的。你只需要让事情顺利进行并使用它们#include
。main
当您的功能彼此相关时,可能会出现这种情况。如果您只是将它们写在main()
没有前向声明的上方,则必须对它们进行排序,以便它们知道它们所依赖的功能。在某些情况下(循环引用),如果没有前向声明,甚至无法编译。
向前声明函数时,您不会遇到此问题。
此外,当具有main()
第一个功能时,您将生成更具可读性的代码,但这可能只是个人喜好。
它也可能更具可读性,因为另一位编码员对他将在文件中找到的功能进行了概述。
如果有标准,那就是在包含的 .h 文件中包含函数声明。这样,文件中函数的顺序无关紧要。我几乎从不编写没有声明的函数,当其他人这样做时,我感到很吃惊。
大多数专业 C++ 开发人员使用的标准是这个。
当您从事小型家庭或学校项目时,可以将多个课程甚至整个程序放入一个文件中。由于规模小,您如何订购类或函数并不重要。你可以做对你来说更方便的事情。但是,如果您的教授要求学生在作业中遵循某些代码标准(例如,将 main() 放在首位),那么您必须遵循这些标准。
这种方法很可能受到您的教授的青睐,并且很可能是她将其作为惯例教授的原因。这里有两个选择,顺其自然(即不要试图破坏并可能因为你的教授觉得你没有遵循“惯例”而被扣分)或向她解释——没有必要这样做这种方式(或任何其他方式),只要代码的意图是明确的!
声明(函数原型)的建议与 C 相关,然后与 C++ 相关,因为在 C++ 中没有隐式函数声明,因此您必须始终在使用前声明。因此,如果您有一个涉及多个函数的递归,那么您肯定会有至少一个未定义的函数声明。
对于一个小项目,使用你想要的任何风格,但要保持一致。对于一个大型项目,您可能需要几个 .cpp 文件并在头文件中定义接口(无论是类还是函数)。至少在单个文件中也要保持一致。
最后一件事,我说过要保持一致吗?
我通常使用第二种形式,因为您必须维护函数声明 - 它们必须具有正确的签名和名称,而且 imo,当您可以先定义函数时,它们只是过度输入。无需维护,无需浪费时间。
我认为这里适用的原则是“不要重复自己”。如果您使用前向声明,那么您就是在不必要地重复自己。