我有一个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
我可以选择性地包含文件的最佳方式是什么,这样我就不会遇到这样的问题?
答案 0 :(得分:2)
您的问题似乎更多是由于定义重叠而不是恰好具有相同名称的文件。但不管怎样,我建议采取以下措施:
请勿在应用程序的同一文件中使用这两个库中的文件。有一些使用第一个库的文件和一些使用第二个库的文件。使用第一个库的文件使用其包含路径进行编译。使用第二个库的文件使用其包含路径进行编译。
如果你真的需要在同一个代码中集成对两个库的调用,只需用一个清理过的接口包装一个或两个库,其文件和标识符名称不会与你的项目名称冲突。