go与C的高度兼容混合编程

package main

/*
#include <stdio.h>
#include <stdlib.h>
#include "haha.h"

#cgo linux CFLAGS: -I./
#cgo linux LDFLAGS: -L./ -lhaha

void c_print(char *str)
{
         printf("%s\n", str);
}

void foo() {
        printf("i am foo\n");
}

*/
import "C" //import "C" 必须单起一行,并且紧跟在注释行之后

import "unsafe"

func main() {
        s := "Hello Cgo"
        cs := C.CString(s)               //将go的字符串变成c的字符串
        C.c_print(cs)                    //调用C函数
        defer C.free(unsafe.Pointer(cs)) //释放内存

        C.foo()
        C.haha()
}

C语言和go的结合非常兼容,不需要任何太多的数据类型转换。

results matching ""

    No results matching ""