V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
liyu4
V2EX  ›  问与答

go 条件编译通过,会的同学请指点一二

  •  
  •   liyu4 · 2017-02-06 23:38:47 +08:00 · 3385 次点击
    这是一个创建于 2847 天前的主题,其中的信息可能已经有所发展或是发生改变。
    // +build windows
    
    package main
    
    import (
    	"fmt"
    
    	"syscall"
    	"unsafe"
    )
    
    var kernel32 = syscall.NewLazyDLL("kernel32.dll")
    
    var (
    	procGetConsoleMode = kernel32.NewProc("GetConsoleMode")
    )
    
    // IsTerminal returns true if stderr's file descriptor is a terminal.
    func IsTerminal() bool {
    	fd := syscall.Stderr
    	var st uint32
    	r, _, e := syscall.Syscall(procGetConsoleMode.Addr(), 2, uintptr(fd), uintptr(unsafe.Pointer(&st)), 0)
    	return r != 0 && e == 0
    }
    
    func main() {
    	fmt.Println("hello")
    }
    

    output:

    → go run main.go
    # command-line-arguments
    ./main.go:12: undefined: syscall.NewLazyDLL
    ./main.go:22: too many arguments in call to syscall.Syscall
    

    放在独立的文件里是可以被编译的,但是放在 main 函数里面怎么就不可以。实在费解,可能我理解的是错的,请会的同学指出我的错误!

    第 1 条附言  ·  2017-02-07 09:41:04 +08:00
    → go build -x main.go
    WORK=/var/folders/68/kzwrnlkn3xzdlg8cjn2d0zm00000gp/T/go-build972181979
    mkdir -p $WORK/command-line-arguments/_obj/
    mkdir -p $WORK/command-line-arguments/_obj/exe/
    cd /Users/admin/svn/src
    /usr/local/go/pkg/tool/darwin_amd64/compile -o $WORK/command-line-arguments.a -trimpath $WORK -p main -complete -buildid 37d5bca645f83d38f58c4de37fe5df48c9ced803 -D _/Users/admin/svn/src -I $WORK -pack ./main.go
    # command-line-arguments
    ./main.go:12: undefined: syscall.NewLazyDLL
    ./main.go:22: too many arguments in call to syscall.Syscall
    
    
    2 条回复    2017-02-07 07:40:00 +08:00
    defia
        1
    defia  
       2017-02-06 23:48:16 +08:00   ❤️ 1
    run 就直接 run 这个文件了吧 go build 才会忽略这个
    liyu4
        2
    liyu4  
    OP
       2017-02-07 07:40:00 +08:00 via iPhone
    @defia go build 也是报这个错误
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2748 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 11:32 · PVG 19:32 · LAX 03:32 · JFK 06:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.