如何命名 C++ header 文件?
How to namespace C++ header files?
我使用不同库的代码,这些库使用 defines.h
这样的名称。这不仅会导致相同文件名的冲突,还会造成混淆。 defines.h
include 来自哪个库?
包含为 #include <library/defines.h>
将是一个干净的解决方案,但是包含路径需要是库的 parent 目录,这又是相当不干净的。
有什么方法可以为包含路径设置别名,以便 -I/path/to/library
使 headers 在 library/headername.h
下可用?
Is there some way to alias the include path, so that -I/path/to/library
makes the headers available under library/headername.h
?
在这种情况下似乎没有必要。您可以简单地使用 -I/path/to
这使得 /path/to/library/headername.h
在 library/headername.h
.
下可用
就是说,虽然没有这样的编译选项(据我所知),但您可以为大多数文件系统中的文件路径创建这样的 "aliases"。这些别名称为符号 links。在这种情况下,你可以创建一个指向 .
的 link /path/to/library/mylibrary
,这将使 /path/to/library/headername.h
在 mylibrary/headername.h
下可用,假设你已经使用 -I/path/to/library
.
至少在 unixy 系统上,当你编译和 安装 一个库时,头文件被安装到
/usr/lib/libraryname/*.h
或者类似
/opt/libraryname-1.2/include/libraryname/*.h
然后如果有必要(不安装到编译器的默认包含搜索路径),右目录添加编译器选项,例如 gcc 选项
-I/opt/libraryname-1.2/include
然后总是在源代码中这样做,相信构建系统包含正确的搜索路径:
#include <libraryname/includefile.h>
我使用不同库的代码,这些库使用 defines.h
这样的名称。这不仅会导致相同文件名的冲突,还会造成混淆。 defines.h
include 来自哪个库?
包含为 #include <library/defines.h>
将是一个干净的解决方案,但是包含路径需要是库的 parent 目录,这又是相当不干净的。
有什么方法可以为包含路径设置别名,以便 -I/path/to/library
使 headers 在 library/headername.h
下可用?
Is there some way to alias the include path, so that
-I/path/to/library
makes the headers available underlibrary/headername.h
?
在这种情况下似乎没有必要。您可以简单地使用 -I/path/to
这使得 /path/to/library/headername.h
在 library/headername.h
.
就是说,虽然没有这样的编译选项(据我所知),但您可以为大多数文件系统中的文件路径创建这样的 "aliases"。这些别名称为符号 links。在这种情况下,你可以创建一个指向 .
的 link /path/to/library/mylibrary
,这将使 /path/to/library/headername.h
在 mylibrary/headername.h
下可用,假设你已经使用 -I/path/to/library
.
至少在 unixy 系统上,当你编译和 安装 一个库时,头文件被安装到
/usr/lib/libraryname/*.h
或者类似
/opt/libraryname-1.2/include/libraryname/*.h
然后如果有必要(不安装到编译器的默认包含搜索路径),右目录添加编译器选项,例如 gcc 选项
-I/opt/libraryname-1.2/include
然后总是在源代码中这样做,相信构建系统包含正确的搜索路径:
#include <libraryname/includefile.h>