C宏:替换具有尖括号的C标头包含

erhoui1w  于 2023-03-28  发布在  其他
关注(0)|答案(2)|浏览(107)

我正在PlatformIO项目https://registry.platformio.org/libraries/joaolopesf/RemoteDebug中使用此库
我遇到了this issue,其中的库有一个过时的include #include <hwcrypto/sha.h>,这会导致编译错误。
解决方案是用较新的include <esp32/sha.h>替换它。
虽然这是一个有效的解决方案,但我不喜欢必须编辑库代码才能实现它。
那么问题是,我是否可以通过某种方式从用户代码中修复这个问题?比如#define <hwcrypto/sha.h> <esp32/sha.h>
(That特定宏引发不同的编译错误)。

roejwanj

roejwanj1#

在源代码级别没有替代include文件名的解决方案。但是您可以使用include路径来解决这个问题:
从主源目录运行以下命令:

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

然后你可以编译库源代码不修改通过-Icompat作为一个额外的编译选项。你可以使用不同的路径为compat目录,以避免修改源代码树。

tcomlyy6

tcomlyy62#

如果我能从用户代码中修复这个问题呢
不可以。您必须编辑源文件。

相关问题