1

我正在尝试以编程方式将C /C++ 代码转换为 C#。我在转换预处理器指令时遇到了一个问题,尤其是在C#if /C++的#elif预处理器接受更多条件的情况下。所以,这不会在 C# 中编译。

根据我读过的内容,C# 预处理器只接受==!=&&||. 但是对于C,可以有算术运算符用于加法、减法、乘法、除法、按位运算、移位、比较和逻辑运算。此外,与C和 C++ 不同,您不能为符号分配数值;C# 中的#if语句是布尔值,仅测试符号是否已定义。

我将能够处理==!=但是对于其他条件呢?

4

1 回答 1

1

这是原始 C# 规范的设计决定。人们认为 C++ 预处理器太强大了(国际混淆 C 代码竞赛有一个完整的部分用于最严重地滥用此“功能”)。

所以基本上,没有。C# 没有 C 预处理器。

但是有 T4 模板的概念,您可以像使用 C 预处理器一样滥用它。这是代码生成,而不是代码的过程中转换.....

PS。您是否考虑过使用 C++/CLI 而不是 C#.NET 来实现您的目的?我假设您想在 .NET 中运行遗留的 C/C++ 代码。C++/CLI 是一种用于将代码移植到 .NET 中的更好的语言。

于 2013-06-05T03:22:07.177 回答