【发布时间】:2017-05-14 11:31:06
【问题描述】:
我在我的 C++ 程序中使用了一个外部库。这个库有一个名为“Common.h”的文件。在不知道这个文件的情况下,我还在我的程序中创建了一个“Common.h”。在标头中使用编译器标志“#pragma once”,我可以确保这两个文件都可以包含在编译中。但是,我意识到当我在程序中调用我的“Common.h”时,预处理器错误地包含了外部库中的“Common.h”,这会破坏编译。有没有像“命名空间”这样的选项允许我包含正确的文件。我发现这真的很难,因为我们可能不(实际上不需要)了解外部库中的所有文件。
【问题讨论】:
-
在使用相同名称时区分它们的唯一方法是在 include 指令中包含部分或全部文件路径。
-
您可以将标题存储在项目子文件夹和
#include "my_project/Common.h"中。 TBH 图书馆应该已经为自己做到了。也许您的编译器包含标志设置不正确? -
让文件夹名称为头文件的命名空间。
标签: c++ gcc c-preprocessor