我知道C#与.NET Framework不同,C#是ECMA(ECMA-334)和ISO(ISO / IEC 23270)标准的编程语言。
我不想要将 ANY C#源代码(包括.NET Framework)转换为C的转换器,但我想要一个将ECMA标准C#源代码转换为ANSI C源代码的工具
像java2c这样的东西,但是对于ECMA C#。
答案 0 :(得分:4)
确实不是这样,但Vala编程语言能够获取与C#非常相似的源代码,并生成C代码或直接编译它。
当然,唯一的问题是库:C#包含许多您必须提供的API,或者修改源代码以适应Vala标准库。
如果您想将此代码翻译为C,因为您需要编译它,还有其他可能性。
例如,微软世界中的ngen:
http://msdn.microsoft.com/en-us/library/6t9t5wcf(v=vs.80).aspx
在mono项目中,您可以使用解释器和库创建单个exe文件。寻找mkbundle:
http://www.mono-project.com/Mono:Runtime
Mono能够“提前”编译,即在程序执行之前生成本机代码,因此运行速度更快。
http://www.mono-project.com/Mono:Runtime#Ahead-of-time_compilation
答案 1 :(得分:1)
作为一个概念验证,我编写了一个名为universal-transpiler的工具,它将C#的一小部分转换为C和其他几种语言。
例如,它可以将此函数从C#转换为C:
public static double distance_formula(double x1,double y1,double x2,double y2){
return Math.Sqrt(Math.Pow(x1-x2,2)+Math.Pow(y2-y1,2));
}
这是翻译者生成的等效C代码:
double distance_formula(double x1,double y1,double x2,double y2){
return sqrt(pow(x1-x2,2)+pow(y2-y1,2));
}
我还没有找到任何其他C#-to-C编译器,但是有一个C#-to-Lua编译器可以与Lua-to-C编译器组合以生成C源代码。
答案 2 :(得分:0)
取决于你的意思。如果您的意思是“是否可以将C#转换为可读和可维护的C代码?”,那么抱歉,答案是否 - C#功能不直接映射到下进行。