我可以在头文件中指定函数原型和函数定义(在C ++中)吗?

时间:2015-11-10 14:33:51

标签: c++ c++11 header-files

我想澄清一下我是否可以在头文件中指定函数原型和函数定义?

我是否有必要创建一个源文件来定义在头文件中声明的函数?

谢谢...

2 个答案:

答案 0 :(得分:4)

  

我是否有必要创建一个源文件来定义头文件中声明的函数?

这不是必要的,只是推荐。

如果在头文件中有定义的函数,则在包含该标题的每个翻译单元(源文件)中将定义

除非您采取措施避免它,否则当您将各种翻译单元链接在一起时会导致错误(“多重定义......”)。

避免这种情况的一种方法是声明函数inline

一般来说,您最好使用源文件中的标头和定义(翻译单元)中的声明,以提高编译速度和可维护性。

直到你进入模板函数的主题(几乎 在头文件中定义)。但它们完全是一个完全不同的野兽,我现在不会把它们与你混淆。 ; - )

答案 1 :(得分:1)

是的,您可以在头文件中定义所有功能。这是在header only libraries中完成的。

通常一个人不这样做,因为它可能导致代码膨胀和更长的编译时间,但它不是必需的。