锈病的proc宏的C ++替代

时间:2020-09-25 05:16:43

标签: c++ rust macros

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

1 个答案:

答案 0 :(得分:4)

目前,C ++中没有任何内置工具可以实现Rust proc-macros的功能。

传统上,在C ++中,我看到了两种实现相似效果的不同方法:

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

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


Herb Sutter提出了meta-classes,该提议将涵盖proc-macro的一个子集:derive宏。

它不会涵盖使用proc-macros来转换功能代码或以其他方式现场生成任意代码的情况。