【发布时间】:2011-10-06 08:18:02
【问题描述】:
当 C 或 C++ 库带有多个标头时,它们通常位于特定文件夹中。例如,OpenCV 在opencv 文件夹中提供cv.h 和highgui.h。
最常见的包含它们的方法是将此opencv 文件夹添加到预编译器的搜索路径(例如gcc -I/pathto/opencv),并在源文件中按文件名简单地包含标题(例如@987654326 @)
还有另一种选择,因为包含标题的文件夹经常与父文件夹中的其他文件夹(例如在/usr/include 或开发团队的某些常见路径中)放在一起。在这种情况下,如果父文件夹已经在路径中,则在源文件中指定头文件夹(例如#include <opencv/cv.h>)就足够了。
我能想到的唯一问题是所有标题都在一个文件夹中的系统。但是,这种替代方法可以防止歧义(例如,如果两个库具有 vector.h 标头),可以更轻松地设置另一个构建系统,并且可能更有效地考虑预编译器搜索头文件。
鉴于此分析,我倾向于替代方案,但我在互联网上找到的绝大多数代码都使用第一个。例如,对于"#include <cv.h>",Google 返回大约 218000 个结果,而对于 "#include <opencv/cv.h>",返回 79100 个结果。我错过了常用方法的优点,还是替代方法的缺点?
【问题讨论】:
标签: c++ c compiler-construction