没有头文件的C ++函数

时间:2013-01-23 03:57:06

标签: c++ function header-files

单独使用C ++函数需要头文件和代码文件吗?

我正在编写一些C ++函数,这些函数使用我的一些其他C ++类,但不属于类本身。它们打算在dll中编译,所以我想知道是否有必要在单独的头文件中声明它们,或者我是否可以/应该将声明放在.cc文件中。

也许这只是不好的做法?

3 个答案:

答案 0 :(得分:2)

头文件很有用,因为它能够让其他源文件知道在不同翻译单元中声明的函数。

编译器必须能够检查您调用的内容对于类型检查器是否正确。但必要性来自声明本身而不是来自头文件的存在。

对于DLL,如果我没记错的话,你不会因为无论何时使用它都要声明函数的签名而被迫这样做,例如。

extern C __declspec(dllimport) void foo();

当然这意味着你需要转发声明它们,所以我没有看到你的DLL的头文件有任何问题,它只会将所有签名保存在一起。

答案 1 :(得分:1)

如果要使用定义它的源文件之外的函数,则绝对需要声明。最好将声明放在头文件中以使其保持一致,否则您最终会重复自己并引入潜在的错误来源。

答案 2 :(得分:1)

这不是绝对必要的,但强烈建议。

将函数声明放在头文件中,将函数定义放在源(.cc)文件中。动机是允许用户(这里是其他程序员)只查看接口而不是实现(因为它可以改变)。此外,它允许其他源文件包含您的头文件并使用您提供的功能。

唯一的例外是静态函数,它们不应在头文件中声明,因为它们不应在源文件之外查看或使用。