【问题标题】:Convert C/C++ #if and #elif directive to C#将 C/C++ #if 和 #elif 指令转换为 C#
【发布时间】:2013-05-31 14:57:48
【问题描述】:

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

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

我将能够处理==!=,但其他情况呢?

【问题讨论】:

  • 如何将 C 的预处理器用作预处理器

标签: c# c c-preprocessor preprocessor-directive


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-18
    • 1970-01-01
    • 1970-01-01
    • 2021-04-27
    相关资源
    最近更新 更多