让 GCC 预处理器将尖括号视为引号

Have GCC preprocessor treat angle brackets as quotes

我正在尝试使用系统 header,而系统 header 在本应使用引号的地方使用了 angle-brackets。具体来说,我在 /usr/include/hdf5/serial/ 中有一个 system-supplied header 文件,其中包含

#include <hdf5.h>

我当然可以通过 G++ 选项 -isystem /usr/include/hdf5/serial,但我宁愿保持模块化,而不是将这段配置复制到任何项目最终会消耗掉这个 header.

我在 Ubuntu 18.04 和 CentOS 7.x 上使用 G++ 7.3 和 DevToolset 7。

您提出的是唯一明智的解决方案 - 库要求您将该目录添加到编译器的 system-includes 路径中。要将其与使用您的 headers 的程序隔离开来,您可以 forward-declare 仅从库中获取您需要的东西,或者您可能需要某种抽象层。或者直接将图书馆的 pkg-config 转发到您自己图书馆的 .pc 文件中。