包含文件冲突解决方案

时间:2016-02-05 22:41:51

标签: c++

我有一个C ++项目,我使用g ++在Linux上构建。我有两个"包含目录"我必须使用-I添加为参数。问题是,在每个目录中,我都有一些重叠和常见的文件。因此,当我有

g++ -o program program.cpp -I/foo/include -I/bar/include 

我得到类似的编译器警告:

stdint.h:174:0: warning: "__UINT64_C" redefined [enabled by default]
#define __UINT64_C(c)     c ## ULL

我可以选择性地包含文件的最佳方式是什么,这样我就不会遇到这样的问题?

1 个答案:

答案 0 :(得分:2)

您的问题似乎更多是由于定义重叠而不是恰好具有相同名称的文件。但不管怎样,我建议采取以下措施:

请勿在应用程序的同一文件中使用这两个库中的文件。有一些使用第一个库的文件和一些使用第二个库的文件。使用第一个库的文件使用其包含路径进行编译。使用第二个库的文件使用其包含路径进行编译。

如果你真的需要在同一个代码中集成对两个库的调用,只需用一个清理过的接口包装一个或两个库,其文件和标识符名称不会与你的项目名称冲突。