mirror of
https://github.com/chai2010/advanced-go-programming-book.git
synced 2025-05-23 20:02:22 +00:00
Merge pull request #474 from kumakichi/fix_cgo_code_snippet
fix cgo code snippet
This commit is contained in:
commit
40b92f8d81
@ -123,9 +123,9 @@ package main
|
||||
#if defined(CGO_OS_WINDOWS)
|
||||
const char* os = "windows";
|
||||
#elif defined(CGO_OS_DARWIN)
|
||||
static const char* os = "darwin";
|
||||
const char* os = "darwin";
|
||||
#elif defined(CGO_OS_LINUX)
|
||||
static const char* os = "linux";
|
||||
const char* os = "linux";
|
||||
#else
|
||||
# error(unknown os)
|
||||
#endif
|
||||
|
@ -164,7 +164,7 @@ func main() {
|
||||
不幸的是这次运行产生了以下错误:
|
||||
|
||||
```
|
||||
pkgpath.NameData: missing Go //type information for global symbol: size 8
|
||||
pkgpath.NameData: missing Go type information for global symbol: size 8
|
||||
```
|
||||
|
||||
错误提示汇编中定义的NameData符号没有类型信息。其实Go汇编语言中定义的数据并没有所谓的类型,每个符号只不过是对应一块内存而已,因此NameData符号也是没有类型的。但是Go语言是再带垃圾回收器的语言,而Go汇编语言是工作在自动垃圾回收体系框架内的。当Go语言的垃圾回收器在扫描到NameData变量的时候,无法知晓该变量内部是否包含指针,因此就出现了这种错误。错误的根本原因并不是NameData没有类型,而是NameData变量没有标注是否会含有指针信息。
|
||||
|
Loading…
x
Reference in New Issue
Block a user