CGO Types
C作为一种混合编程语言已经很久了,无论那些广泛使用的包是用何种语言实现的,都导出了和C兼容的API。Go程序调用C程序,可以借助两种工具实现,一种是cgo,另一种是SWIG工具。Cgo是为C函数创建go绑定的工具;SWIG工具可以提供更复杂的特性来调用C++程序。(关于SWIG工具的使用,可以参考以前的《calling c++ from golang with swig》系列随笔)。
本文主要讲述C语言类型、在CGO中可以引用的C类型及对应的引用类型名称。
查询C99标准文档(6.2.5 Types),主要类型包括:_Bool、char、signed char、unsigned char、short、unsigned short、int、unsigned int、long、unsigned long、long long、unsigned long long、float、double、long double、float _Complex、double _Complex、long double _Complex、void *、__int128_t、__uint128_t
在CGO中引用C类型的名称可以参考CGO官方文档(Command cgo)。Go references to C部分给出了可以引用的数值类型名称。
综合两份参考文献,给出下面的类型列表。
C Types
Cgo Types
_Bool
C._Bool
char
C.char
signed char
C.schar
unsigned char
C.uchar
short
C.short
unsigned short