gpt4 book ai didi

将简单的 C#define 转换为 Rust 常量

转载 作者:太空宇宙 更新时间:2023-11-04 04:33:32 25 4
gpt4 key购买 nike

我有一个专有的图书馆,里面有一个很长的故事和 30KLoC 标题。我想为 Rust 生成绑定(bind)。我几乎成功地使用了 bindgen crate。除了 bindgen 无法将宏常量转换为普通常量。因为那些常量是以模糊的方式定义的,比如

#define CONSTANT ((const_type)SOME_OTHER_CONSTANT)

那么,有什么方法可以将这样的半常量转换为普通的 Rust 常量:

const Type name = value;

更新

显然,crate bindgen 使用 clang 作为其后端。如果向解析器提供正确的标志,clang 能够处理宏定义和其他类似的东西。那么,有人可以建议有关使用 libclang API 处理宏定义的好教程吗?

最佳答案

通过 gcc -E(即预处理器)运行 header 将删除 #define。不过,它可能会删除比您想要的更多的内容。

如果你想有选择地进行预处理,曾经有一个名为 scpp 的实用程序可以做到这一点。除了要下载的一些 tar 文件外,我无法立即找到对它的引用,但你可能有更多的运气。

关于将简单的 C#define 转换为 Rust 常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33529030/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com