Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否有C到C转换器工具?_C#_C - Fatal编程技术网

C# 是否有C到C转换器工具?

C# 是否有C到C转换器工具?,c#,c,C#,C,我知道C#不同于.NET Framework,C#是一种编程语言,符合ECMA(ECMA-334)和ISO(ISO/IEC 23270)的标准 我不想要一个能将任何C#源代码(包括.NET Framework)转换为C的转换器,但我想要一个能将ECMA标准C#源代码转换为ANSI C源代码的工具 类似于但对于ECMA C#。没有这样的东西,但Vala编程语言能够获取与C#非常相似的源代码,并生成C代码或直接编译它 当然,唯一的问题是库:C#有很多API需要提供,或者修改源代码以适应Vala标准

我知道C#不同于.NET Framework,C#是一种编程语言,符合ECMA(ECMA-334)和ISO(ISO/IEC 23270)的标准

我不想要一个能将任何C#源代码(包括.NET Framework)转换为C的转换器,但我想要一个能将ECMA标准C#源代码转换为ANSI C源代码的工具


类似于但对于ECMA C#。

没有这样的东西,但Vala编程语言能够获取与C#非常相似的源代码,并生成C代码或直接编译它

当然,唯一的问题是库:C#有很多API需要提供,或者修改源代码以适应Vala标准库

如果因为需要编译而希望将此代码转换为C,那么还有其他可能性

例如,微软世界的ngen:

在mono项目中,您可以使用解释器和库创建单个exe文件。查找mkbundle:

Mono能够“提前”编译,即在程序执行之前生成本机代码,因此运行速度更快


作为概念证明,我编写了一个名为的工具,可以将C#的一小部分转换为C和其他几种语言

例如,它可以将此函数从C#转换为C:

这是翻译器将生成的等效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源代码


也可以使用编译器将C编译成WebAssembly,然后使用将其反编译成C源代码。

取决于您的意思。如果您的意思是“是否可以将C#转换为可读且可维护的C代码?”,那么很抱歉,答案是-C#功能不会直接映射到C。

我不知道。最大的问题是,您需要一个与.NET framework具有相同API的C库……您想要实现什么?你为什么需要这个?你可以使用Mono#可以在Linux、iOs、Mac、Windows、XBox和Android上使用(Mono和不同的Xmian产品提供的大多数非Windows)。你需要这些以外的东西吗?你看过吗?我发现了这个,不知道它会怎么做:看起来很有趣,虽然它编译成“管理”C++,即C++使用BCL,而不是ISO C++。如果这符合你的需要,那就太好了。(这篇文章似乎没有提供问题的答案。请编辑你的答案,或者只是把它作为问题的评论发布。)如果可以作为评论发布就可以了。但正如我所见,我是新来的,所以没有这个选择。我想添加注释,当从C#转换到C时,不容易使代码可读。我没有权利这样做,所以必须生成答案。我已经用我自己的工具来做这件事了。它可以编译代码,但不容易维护。
double distance_formula(double x1,double y1,double x2,double y2){
    return sqrt(pow(x1-x2,2)+pow(y2-y1,2));
}