我想澄清一下我是否可以在头文件中指定函数原型和函数定义?
我是否有必要创建一个源文件来定义在头文件中声明的函数?
谢谢...
答案 0 :(得分:4)
我是否有必要创建一个源文件来定义头文件中声明的函数?
这不是必要的,只是推荐。
如果在头文件中有定义的函数,则在包含该标题的每个翻译单元(源文件)中将定义。
除非您采取措施避免它,否则当您将各种翻译单元链接在一起时会导致错误(“多重定义......”)。
避免这种情况的一种方法是声明函数inline
。
一般来说,您最好使用源文件中的标头和定义(翻译单元)中的声明,以提高编译速度和可维护性。
直到你进入模板函数的主题(几乎 在头文件中定义)。但它们完全是一个完全不同的野兽,我现在不会把它们与你混淆。 ; - )
答案 1 :(得分:1)
是的,您可以在头文件中定义所有功能。这是在header only libraries中完成的。
通常一个人不这样做,因为它可能导致代码膨胀和更长的编译时间,但它不是必需的。