C 宏:替换包含尖括号的 C 头文件

问题描述 投票:0回答:2

我在 PlatformIO 项目中使用这个库https://registry.platformio.org/libraries/joaolopesf/RemoteDebug

我遇到了这个问题 图书馆有一个过时的包含

#include <hwcrypto/sha.h>
导致编译错误。

解决方案是用更新的 include 替换它

<esp32/sha.h>
.

虽然这是一个有效的解决方案,但我不喜欢必须编辑库代码才能做到这一点。

那么问题是,我是否可以通过某种方式从用户代码中解决这个问题? 像

#define <hwcrypto/sha.h> <esp32/sha.h>
.

(那个特定的宏抛出不同的编译错误)。

c++ c macros include preprocessor
2个回答
0
投票

如果我能以某种方式从用户代码中解决这个问题?

没有。您必须编辑源文件。


0
投票

在源代码层面没有解决方案来替换包含文件名。然而,您可能可以使用符号链接来解决问题:

从主源目录运行这些命令:

mkdir compat
mkdir compat/hwcrypto
echo '#include <esp32/sha.h>' > compat/hwcrypto/sha.h

然后您可以编译库源未修改传递

-Icompat
作为额外的编译选项。您可以为
compat
目录使用不同的路径,以避免修改源代码树。

© www.soinside.com 2019 - 2024. All rights reserved.