预处理器标志来检测CGO构建?

时间:2015-03-11 16:39:43

标签: go cgo

在我的go文件旁边并通过CGO一起编译的c文件中,我想通过预处理器检查它是否通过go编译。我想这样做是因为,例如,我想用#include _cgo_export.h标志保护#ifdef,因为这样的标题仅在编译期间存在,我不希望我的编辑器警告它不存在。

1 个答案:

答案 0 :(得分:2)

documentation开始:

// #cgo CFLAGS: -DWHATEVER_YOU_WANT_TO_INDICATE_CGO=1
import "C"

(如果您不想要值,则只需-D FOO)或在环境中设置CGO_CFLAGS

您可以使用go build -x查看幕后发生的事情。 对我来说,它在编译cgo生成的-D GOOS_freebsd -D GOARCH_amd64文件时显示_cgo_defun.c,但该文件,到我自己的* .c文件。所以我认为没有任何可用的预定义预处理器标志(文档也没有提到任何标志)。