3 回答
TA贡献1784条经验 获得超8个赞
我想今天不存在这样的(C到Go源代码转换)工具。您可能会考虑制作自己的转换器。问题变成:这值得吗?如何做到这一点?
可能不值得付出努力,因为Go和C可能以某种方式可互操作。例如,如果您使用GCC 4.6(或将要发布的4.7,即最新快照),则可以小心地将C&Go代码链接在一起。
当然,像往常一样,罪恶在于细节。
如果需要转换器,是否要使获得的Go代码可读且可编辑(那么,由于要保留代码的结构,并且还希望保留注释,那么任务就比较困难了)?在这种情况下,您可能需要自己的C解析器(这是一项艰巨的任务)。
如果您不关心生成的Go代码的可读性,则可以例如扩展现有的编译器来完成工作。例如,GCC通过插件或MELT扩展是可扩展的,您可以自定义GCC(使用MELT或GCC自己的C插件),以将Gimple表示形式(GCC内部指令的主要内部表示形式)转换为不可读的Go代码。这以某种方式更简单(但仍需要一周以上的工作时间)。
当然,Go接口,通道甚至内存管理(垃圾收集的内存)都没有标准的C语言。
TA贡献1875条经验 获得超5个赞
我几乎可以肯定没有这样的工具,但是恕我直言,每种语言最好以自己的“编码样式”编写。
还记得我们都热爱C预处理器技巧和真正具有指针的艺术作品吗?还记得处理malloc / free或线程需要花费多少精力吗?去是不同的。您没有预处理器,但是有闭包,带有方法的对象,接口,垃圾收集器,切片,goroutines和许多其他不错的功能。
那么,为什么要转换代码而不是用更好,更简洁的方式重写代码呢?
当然,我希望您没有C语言中要移植到Go的1000K行代码:)
- 3 回答
- 0 关注
- 367 浏览
添加回答
举报