advanced-go-programming-book
advanced-go-programming-book copied to clipboard
2.2.2 最后的代码
原来的代码如下
package main
/*
#cgo windows CFLAGS: -DCGO_OS_WINDOWS=1
#cgo darwin CFLAGS: -DCGO_OS_DARWIN=1
#cgo linux CFLAGS: -DCGO_OS_LINUX=1
#if defined(CGO_OS_WINDOWS)
const char* os = "windows";
#elif defined(CGO_OS_DARWIN)
static const char* os = "darwin";
#elif defined(CGO_OS_LINUX)
static const char* os = "linux";
#else
# error(unknown os)
#endif
*/
import "C"
func main() {
print(C.GoString(C.os))
}
建议把 static const char* os = "darwin"; 和static const char* os = "linux"; 的 static去掉,否则会有错误,cgo可以调用static函数,但是无法读取static变量
如果没有static,os这个全局的名字污染太严重了, 或许用宏会好一点