H5T_NATIVE_UINT64不是常数,而是#define,最终结果为
(H5Open(),H5T_NATIVE_UINT64_g),而cgo无法理解。
通过在gcc的预处理器上打开调试输出可以很容易地进行检查:
gcc -E -dM your_test_c_file.c | grep H5T_NATIVE_UINT64
结果:
#define H5T_NATIVE_UINT64 (H5OPEN H5T_NATIVE_UINT64_g)
现在对H5OPEN相同:
gcc -E -dM test_go.c | grep '#define H5OPEN'
给出:
#define H5OPEN H5open(),
现在,cgo确实了解简单的整数常量定义,例如
#define VALUE 1234,或gcc预处理器将变成整数常量的任何内容。见函数
func (p*Package) guessKinds(f *File)在
$GOROOT/src/cmd/cgo/gcc.go。



