在我的go文件旁边并通过CGO一起编译的c文件中,我想通过预处理器检查它是否通过go编译。我想这样做是因为,例如,我想用#include _cgo_export.h
标志保护#ifdef
,因为这样的标题仅在编译期间存在,我不希望我的编辑器警告它不存在。
答案 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文件。所以我认为没有任何可用的预定义预处理器标志(文档也没有提到任何标志)。