将C/ c++ #if和#elif指令转换为c#

本文关键字:指令 转换 #elif c++ #if | 更新日期: 2023-09-27 18:17:11

我正试图将C/c++代码以编程方式转换为c#。我在转换预处理器指令时遇到了一个问题,特别是#if#elif,因为C/c++的预处理器接受更多条件。因此,在c#中无法编译。

根据我所读到的c#预处理器只接受==, !=, &&||。但是对于C,可以使用算术运算符进行加、减、乘、除、位操作、移位、比较和逻辑操作。此外,与C和c++不同,不能为符号赋值;c#中的#if语句是布尔型的,只测试符号是否已经定义。

我将能够处理==!=,但其他条件如何?

将C/ c++ #if和#elif指令转换为c#

这是最初c#规范的一个设计决定。它被认为c++预处理器太强大了(国际混淆C代码竞赛有一个完整的章节来讨论对这个"特性"的最严重滥用)。

所以基本上没有。c#没有像C那样的预处理器。

然而,有T4模板的概念,您可能能够以与C预处理器相同的方式滥用它。这是代码生成,而不是代码的进程转换.....

p。你考虑过用c++/CLI代替c#吗?NET的目的?我假设你想在。net中运行遗留的C/c++代码。对于将代码移植到。net来说,c++/CLI是一种更好的语言。