c2go 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
c2go 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
c2go 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」 !
c2go 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」「最积极运营项目」 !
c2go 获得 2020 年度 OSC 中国开源项目评选「最积极运营项目」 !
授权协议 MIT
开发语言 Google Go 查看源码 »
操作系统 跨平台
软件类型 开源软件
所属分类 开发工具
开源组织
地区 不详
投 递 者 terenceyhj
适用人群 未知
收录时间 2021-04-21

软件简介

c2go是将C转化为Go的工具。

此项目的目标是:

  1. 创建一个通用的工具,可以将C转化为Go
  2. 跨平台
  3. 一个可重用和可预见的工具
  4. 提供快速和小巧的版本

使用示例:

下面例子是将一段 C 代码翻译为 Go 代码

#include <stdio.h>
 
int main()
{
   int n, c;
 
   printf("Enter a number\n");
   scanf("%d", &n);
 
   if ( n == 2 )
      printf("Prime number.\n");
   else
   {
       for ( c = 2 ; c <= n - 1 ; c++ )
       {
           if ( n % c == 0 )
              break;
       }
       if ( c != n )
          printf("Not prime.\n");
       else
          printf("Prime number.\n");
   }
   return 0;
}
c2go transpile prime.c
go run prime.go
Enter a number
23
Prime number.

prime.go 代码如下

package main

import "unsafe"

import "github.com/elliotchance/c2go/noarch"

// ... lots of system types in Go removed for brevity.

var stdin *noarch.File
var stdout *noarch.File
var stderr *noarch.File

func main() {
	__init()
	var n int
	var c int
	noarch.Printf([]byte("Enter a number\n\x00"))
	noarch.Scanf([]byte("%d\x00"), (*[1]int)(unsafe.Pointer(&n))[:])
	if n == 2 {
		noarch.Printf([]byte("Prime number.\n\x00"))
	} else {
		for c = 2; c <= n-1; func() int {
			c += 1
			return c
		}() {
			if n%c == 0 {
				break
			}
		}
		if c != n {
			noarch.Printf([]byte("Not prime.\n\x00"))
		} else {
			noarch.Printf([]byte("Prime number.\n\x00"))
		}
	}
	return
}

func __init() {
	stdin = noarch.Stdin
	stdout = noarch.Stdout
	stderr = noarch.Stderr
}
展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (8)

加载中
想法很奇怪
05/06 15:53
回复
举报
go转C还行,C转go的意义在哪里不明白,C本身不就垮平台吗
05/06 14:30
回复
举报
明显不是为了效率啊. 将c库转为跨平台的go代码, 这样go项目就不依赖系统编译和cgo了. 不用再重写一遍, 非常有用.
05/06 09:56
回复
举报
对于生产环境来说意义不大,Golang效率不如C,Golang本身就可以调用C。 C转Golang只剩下实验意义了。
05/05 10:38
回复
举报
这玩意有市场
05/04 20:24
回复
举报
评论太有才了
05/04 05:48
回复
举报
我也想知道这个使用场景在哪方面?
05/03 23:33
回复
举报
????这个使用场景是因为c效率太高?需要低一些?
05/03 21:14
回复
举报
更多评论
暂无内容
暂无内容
暂无内容
8 评论
30 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部