mirror of
https://github.com/chai2010/advanced-go-programming-book.git
synced 2025-05-24 04:22:22 +00:00
ch2-2-fix typos
This commit is contained in:
parent
cd43ed577d
commit
51688cf5a3
@ -108,7 +108,7 @@ import "C"
|
||||
// #cgo !windows LDFLAGS: -lm
|
||||
```
|
||||
|
||||
其中在windows平台下,编译前会预定义X86宏为1;再非widnows平台下,在链接阶段会要求链接math数学库。这种用法对于在不同平台下只有少数编译选项差异的场景比较适用。
|
||||
其中在windows平台下,编译前会预定义X86宏为1;在非widnows平台下,在链接阶段会要求链接math数学库。这种用法对于在不同平台下只有少数编译选项差异的场景比较适用。
|
||||
|
||||
如果在不同的系统下cgo对应着不同的c代码,我们可以先使用`#cgo`指令定义不同的C语言的宏,然后通过宏来区分不同的代码:
|
||||
|
||||
@ -121,11 +121,11 @@ package main
|
||||
#cgo linux CFLAGS: -DCGO_OS_LINUX=1
|
||||
|
||||
#if defined(CGO_OS_WINDOWS)
|
||||
extern char* os = "windows";
|
||||
char* os = "windows";
|
||||
#elif defined(CGO_OS_DARWIN)
|
||||
extern char* os = "darwin";
|
||||
char* os = "darwin";
|
||||
#elif defined(CGO_OS_LINUX)
|
||||
extern char* os = "linux";
|
||||
char* os = "linux";
|
||||
#else
|
||||
# error(unknown os)
|
||||
#endif
|
||||
@ -162,7 +162,7 @@ go build -tags="windows,debug"
|
||||
|
||||
我们可以通过`-tags`命令行参数同时指定多个build标志,它们之间用逗号分割。
|
||||
|
||||
当有多个build tag时,我们将多个标志通过逻辑操作的规则来组合使用。比如以下的构建标志表示只有在linux/386或非cgo环境的darwin平台下才进行构建。
|
||||
当有多个build tag时,我们将多个标志通过逻辑操作的规则来组合使用。比如以下的构建标志表示只有在”linux/386“或”darwin平台下非cgo环境“才进行构建。
|
||||
|
||||
```go
|
||||
// +build linux,386 darwin,!cgo
|
||||
|
Loading…
x
Reference in New Issue
Block a user