如何命名C ++头文件?

时间:2017-09-22 12:26:14

标签: c++ header include-path

我使用具有不同库的代码,这些库使用defines.h之类的名称。这不仅会导致相同文件名的冲突,还会造成混淆。 defines.h包含哪个库?

包括#include <library/defines.h>将是一个干净的解决方案,但是包含路径需要是库的父目录,这是相当不洁净的。 有没有办法为包含路径设置别名,以便-I/path/to/librarylibrary/headername.h下提供标题?

2 个答案:

答案 0 :(得分:1)

  

是否有某种方法可以为包含路径设置别名,以便-I/path/to/librarylibrary/headername.h下提供标题?

在这种情况下似乎没有必要。您只需使用-I/path/to/path/to/library/headername.h下的library/headername.h

尽管如此,虽然没有这样的编译选项(我知道),但您可以在大多数文件系统中为文件路径创建这样的“别名”。这些别名称为符号链接。在这种情况下,您可以建立一个指向/path/to/library/mylibrary的{​​{1}}链接,假设您使用./path/to/library/headername.hmylibrary/headername.h-I/path/to/library

答案 1 :(得分:0)

至少在unixy系统上,当您编译并安装库时,标题会安装到例如

/usr/lib/libraryname/*.h

或者类似

/opt/libraryname-1.2/include/libraryname/*.h

然后如果有必要(不安装到编译器的默认包括搜索路径),右侧dir添加了编译器选项,对于 gcc 例如选项

-I/opt/libraryname-1.2/include

然后总是在源代码中执行此操作,信任构建系统以包含正确的搜索路径:

#include <libraryname/includefile.h>