Rust 的 proc 宏的 C++ 替代品

标签 c++ rust macros

Rust 具有非常惊人的功能,可以在编译时使用纯 Rust 代码的 proc_macros 生成代码。 C++ 中是否有任何类似的东西可以让我执行真正的 C++ 代码来生成代码而不是丑陋的定义。

最佳答案

目前,C++ 中没有内置任何东西来实现与 Rust proc-macros 等效的功能。

传统上,在 C++ 中,我见过 2 种不同的方法来实现类似的效果:

  • 代码生成:一个单独的可执行文件作为构建的一部分运行以生成 C++ 文件。例如 LLVM 功能 TableGen .
  • 预处理:一个单独的可执行文件预处理 C++ 文件并在构建过程之前转换它们。例如QT特性MOC .

我认为 QT 的 MOC 在精神上更接近于 Rust proc-macros,而 LLVM TableGen 更接近于 Rust 的 build.rs


Herb Sutter 一直在求婚meta-classes ,这将涵盖过程宏的一个子集:派生宏。

它不会涵盖使用 proc-macros 来转换函数代码,或以其他方式就地生成任意代码。

关于Rust 的 proc 宏的 C++ 替代品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64058215/

相关文章:

rust - 从迭代器返回切片时无法推断出合适的生命周期

c++ - #include 文件派生自宏 __FILE__?

c++ - 如何正确关闭 IOCP 服务器?

c++ - 如何在 C++ 中使用带有 'do while' 循环的计数器?

c++ - 为什么 "!="与迭代器一起使用而不是 "<"?

C中的计算包含

c++ - 使用宏打开/关闭 openmp

c++ - 将 char* 转换为字符串

rust - 添加生命周期参数时借用中断

rust - 调用 Clap 的 get_matches 后如何显示帮助?