2

我有一个自动生成的 .c 文件,其中包含我需要从 .Net 访问的 const 和 enum。我想运行一个预构建脚本,它将 .c 文件(使用 C 语法)转换为 .cs 文件(使用 C# 语法)。这些文件非常简单,因此应该可以编写脚本来解决这个问题。

这是 .c 文件的一部分

#define Bitfile "Test.bit"

static const char* const BitfileSignature = "A6A316954DA417A2F886F3B0035019B1";

typedef enum
{
   ControlBool_TestBool_Address = 0x815E,
   ControlBool_IrqHandshakeWriteToDma_Address = 0x8112,
   ControlBool_WriteToDma_Address = 0x810E,
   ControlBool_stop_Address = 0x813A,
} ControlBool;

我想把它转换成这样的东西

public static class MyConstants
{
    public static string Bitfile = "Test.bit";
    public static string BitfileSignature = "A6A316954DA417A2F886F3B0035019B1";
}

public enum MyEnum
{
    ControlBool_TestBool_Address = 0x815E,
    ControlBool_IrqHandshakeWriteToDma_Address = 0x8112,
    ControlBool_WriteToDma_Address = 0x810E,
    ControlBool_stop_Address = 0x813A,
}

有谁知道我可以用于此转换的好工具?最好是VS2010自带的工具。

4

1 回答 1

1

您可以尝试T4 文本模板从中生成代码文件。它很好地集成到了 Visual Studio 中,一旦你掌握了它,它就是一个相当容易使用且功能强大的文本模板引擎。当然,您需要定义 2 个单独的模板(一个用于 C#,一个用于 C)。

[编辑]:看来我没有阅读整个问题。OP 问题是从 C 转换为 C#。在这种情况下,我仍然坚持使用 T4 的建议,但要阅读 C 源代码,您需要编写一些自定义解析代码。考虑到它只涉及枚举类型定义,解析代码应该相当简单。另一方面,如果 C defs 已经从某个外部定义生成(例如某处的 xml 文件),那么您可以将其视为数据源

于 2013-01-21T14:38:22.583 回答