CGO快速入门

1. 通过`improt "C"`语句开启CGO特性
2. `/**/`中间是C代码,之后接 import "C" 如果存在空行 就会报错.could not determine kind of name for C.*
3. CGO不仅仅用于Go语言中调用C语言函数,还可以用于导出Go语言函数给C语言函数调用

示例一,开启CGO特性:
package main

//#include <stdio.h>
import "C"

func main() {
	// println("hello cgo")
	C.puts(C.CString("Hello, World\n"))
}

  示例二,调用自定义的C方法:

package main

/*
#include <stdio.h>

static void SayHello(const char* s) {
    puts(s);
}
*/
import "C"

func main() {
	C.SayHello(C.CString("Hello, World\n"))
}

  C代码与go代码放在同一个文件中,C代码注释起来,紧接着换行写 import "C"

  示例三,C代码与Go代码分离:

package main

// void SayHello(const char* s); import "C" func main() { C.SayHello(C.CString("Hello, World\n")) }

  同目录下需要放置一个hello.c文件,内容如下:

#include <stdio.h>

void SayHello(const char* s) {
    puts(s);
}

  

posted @ 2021-02-16 22:33  山分子  阅读(584)  评论(0编辑  收藏  举报