go是支持调用C代码的,但是调用有较多限制。
这是一个go调用文件内部的C语言代码的示例。
注意的点:
- C代码需要加注释,否则无法识别;
- import "C" 需要单独的一行,不能和其他的放在一起引入,否则会提示找不到;
- import "C" 需要紧跟着在C代码结束的下一行,否则会报未定义的错误;
- 编译前可能提示找不到被调用的函数,但是编译之后就正常了,因为编译前是看做注释的;
- 还有较多的限制,具体看官方文档。
package main
/*
#include "stdio.h"
int add(int a,int b){
return a+b;;
}
void c_printf(char * buff){
printf("c print: %s\n", buff);
}
*/
import "C" //注意这里不能有空行,import C 需要紧跟着在C代码下一行
import (
"fmt"
)
func main() {
C.puts(C.CString("Hello World"))
fmt.Println(C.add(1, 1))
C.c_printf(C.CString("hello world!"))
}