RISC的PROC宏的C++替代
Rust具有非常惊人的特性,可以在编译时使用纯Rust代码的proc_宏生成代码。是否有类似的C++让我执行真正的C++代码来生成代码而不是丑陋的定义。< p>没有什么东西可以在C++中实现,以达到等价的RoC PROC宏,目前。 传统上,在C++中,我看到了2种不同的方法来达到类似的效果: 代码生成:一个单独的可执行文件作为生成C++文件的构建的一部分运行。例如LLVM特性。 预处理:一个单独的可执行文件预处理C++文件并在生成过程之前对它们进行转换。例如QT特性。 我认为QT的MOC在精神上更接近Rust proc宏,LLVM TableGen更接近Rust的build.rs Herb Sutter一直在建议,这将涵盖proc宏的一个子集:派生宏RISC的PROC宏的C++替代,c++,rust,macros,C++,Rust,Macros,Rust具有非常惊人的特性,可以在编译时使用纯Rust代码的proc_宏生成代码。是否有类似的C++让我执行真正的C++代码来生成代码而不是丑陋的定义。< p>没有什么东西可以在C++中实现,以达到等价的RoC PROC宏,目前。 传统上,在C++中,我看到了2种不同的方法来达到类似的效果: 代码生成:一个单独的可执行文件作为生成C++文件的构建的一部分运行。例如LLVM特性。 预处理:一个单独的可执行文件预处理C++文件并在生成过程之前对它们进行转换。例如QT特性。 我认为QT的MOC在精神上
不使用PROC宏来转换函数代码,否则就在本地生成任意代码。
,目前C++中没有任何东西可以实现等价的RoC PROC宏。 传统上,在C++中,我看到了2种不同的方法来达到类似的效果:
代码生成:一个单独的可执行文件作为生成C++文件的构建的一部分运行。例如LLVM特性。 预处理:一个单独的可执行文件预处理C++文件并在生成过程之前对它们进行转换。例如QT特性。 我认为QT的MOC在精神上更接近Rust proc宏,LLVM TableGen更接近Rust的build.rs Herb Sutter一直在建议,这将涵盖proc宏的一个子集:派生宏它不包括使用proc宏转换函数代码,或以其他方式原位生成任意代码。是。模板在编译时实例化。constexpr可以在编译时进行计算。此外,编译器尝试在编译时评估可能的情况,例如使用常量传播。我对铁锈了解得太少,并告诉RISE的PROC宏是多么的相似。我能想到的最接近C++的代码,它是C++语言代码的一部分,它将是一种方法,而不是真正的RISE程序宏。模板在编译时实例化。constexpr可以在编译时进行计算。此外,编译器尝试在编译时评估可能的情况,例如使用常量传播。我对铁锈了解得太少,无法告诉RISE的PROC宏。我能想到的最接近C++的代码是C++语言的一部分,它是一种方法,并不能与RIST的程序宏相媲美。