通过CGo,Go可以使用C语言库。Golang中,需要写一行单独的导入语句:
然后在这一行前面以注释的形式添加C语言代码,并注明预处理器和链接器参数:
需要注意的是C语言的数据结构在Go中是不可见的,反之亦然,需要显式转换。此后即可使用C语言调用。下面是一个OQS的包装代码,作为参考:
注意:
C语言的void *对应的就是unsafe的uintptr。
不能使用sizeof。
常量也位于C包下,但预编译指令无法使用。