2016-12-30 27 views
3

我在我的C++程序中使用外部库。这个库有一个名为“Common.h”的fie。不知道这个文件,我也在我的程序中创建了一个“Common.h”。在头文件中使用编译器标志“#pragma once”我可以确保这两个文件都可以包含在编译中。但是,我意识到当我在程序中调用我的“Common.h”时,预处理器错误地包含了来自外部库的“Common.h”,这会破坏编译。有没有像“命名空间”这样的选项允许我包含正确的文件。我发现它非常困难,因为我们可能不(实际上不需要)意识到外部库中的所有文件。如何在C++项目中包含具有相似名称的头文件

+0

的唯一方法,而使用相同的名称来区分它们是由包括部分或全部文件路径的包含指令。 –

+3

您可以将标题存储在项目子文件夹和'#include“my_project/Common.h”'中。 TBH图书馆应该已经为自己做了。也许你编译器的include标志设置不正确? – Galik

+0

让文件夹名称为头文件的名称空间。 –

回答

8

一般程序有几个所谓的包括路径查找头文件。看起来你已经包含了包含你的“Common.h”文件以及库头目录的路径。对我来说,完美的解决方案似乎除去包含的库文件路径,并使用明确的相对路径,如:

#include "mylib/include/Common.h" 
+0

不应该忘记#include <>和#include“”具有不同的优先级。一个使用<>在平台定义的文件夹(特定于实现)中查找,其他 - 首先在项目文件夹中,应该使用非递归部分路径(有实现细节,但主要是因为大量不同的平台) – Swift

1

你可以简单地重命名“COMMON.H”文件,然后包括

+0

请参阅我对yugr的回复 – Soo

相关问题