独立的 C++ 函数是否需要头文件和代码文件?
我正在编写一些 C++ 函数,这些函数使用我的其他一些 C++ 类,但它们本身不属于某个类。它们打算在 dll 中编译,所以我想知道是否有必要在单独的头文件中声明它们,或者我是否可以/应该将声明放在 .cc 文件中。
也许这只是不好的做法?
独立的 C++ 函数是否需要头文件和代码文件?
我正在编写一些 C++ 函数,这些函数使用我的其他一些 C++ 类,但它们本身不属于某个类。它们打算在 dll 中编译,所以我想知道是否有必要在单独的头文件中声明它们,或者我是否可以/应该将声明放在 .cc 文件中。
也许这只是不好的做法?
头文件很有用,因为它能够让其他源文件知道在不同翻译单元中声明的函数。
编译器需要这样做才能检查您调用的内容对于类型检查器是否正确。但必要性来自声明本身,而不是来自头文件的存在。
对于 DLL,如果我没记错的话,你不会因为在使用它们时无论如何都要声明函数的签名而被迫这样做,例如。
extern C __declspec(dllimport) void foo();
当然,这意味着无论如何您都需要转发声明它们,因此我认为拥有 DLL 的头文件没有任何问题,它只会将所有签名放在一起。
如果要在定义它的源文件之外使用函数,则绝对需要声明。最好将声明放在头文件中,以使其保持一致,否则您最终只会重复自己并引入潜在的错误来源。
这不是绝对必要的,但强烈推荐。
将函数声明放在头文件中,将函数定义放在源 (.cc) 文件中。其动机是允许用户(这里是其他程序员)只查看接口而不是实现(因为它可以更改)。此外,它允许其他源文件包含您的头文件并使用您提供的功能。
唯一的例外是静态函数,它们不应该在头文件中声明,因为它们不应该在源文件之外查看或使用。