在C++中共享库主头文件的最佳实践是什么?

Nic*_*ton 4 c++ header shared-libraries

当我创建共享库时,我在库源的根目录中有一个头文件(但没有文件扩展名),名称与库相同.

例如,如果我的库名为libirock.so,那么我在项目根目录中有一个名为irock的文件.此文件将包含库中所有最重要的标头,因此在实现库时,您只需使用此包含行:

#include <irock> // Instead of <irock.h>
Run Code Online (Sandbox Code Playgroud)

当我看到类似于的编译器警告时,我明白了这个想法:

#include <string.h> is obsolete, use #include <string> instead
Run Code Online (Sandbox Code Playgroud)

两个问题:

  1. 使用irock而不是irock.h最佳实践?
  2. 使用单个头文件而不是许多头是正确的吗?

行动方针

谢谢你的回答!从答案中,我决定:

  1. 将使用<irock.h>而不是<irock>.
  2. 我将继续使用"主要"头文件.

Ala*_*lan 6

总而言之,没有.你想要明确地使用irock.h

扩展到位后,很明显这是一个头文件,任何使用基于文件扩展名的文件的应用程序都会正确地知道如何解释头文件.


Tyl*_*nry 5

不, <header> 而不是 <header.h> 习惯用法应该仅适用于标准库(和标准模板库)标头。


And*_*ant 5

标准中没有规定有关文件名扩展的“允许”、“禁止”或“最佳实践”。

使用您喜欢的任何形式。在某些平台上,为注册类型提供文件扩展名有一个便利因素。

就其价值而言<string.h>,它们<string>是完全不同的标头。C++ 命名空间的等效项<string.h>实际上是<cstring>.