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 關注
- 412 瀏覽
添加回答
舉報