golang支持吗?
#define DEBUG
#ifdef DEBUG
fmt.Println("Debug message...");
#endif
那么我可以构建一个没有任何运行时开销的调试版本吗?
golang支持吗?
#define DEBUG
#ifdef DEBUG
fmt.Println("Debug message...");
#endif
那么我可以构建一个没有任何运行时开销的调试版本吗?
Go语言没有预处理器或宏系统。您可以通过-tags
标志将标记传递给go build,并使用构建约束。为此,您需要同一源的两个版本,只有一个版本会根据是否存在标记而进行构建。
请查看https://golang.org/pkg/go/build/中的构建约束。
main_debug.go
// +build debug
package main
import (
"fmt"
)
func main() {
fmt.Println("Debug build")
}
主要发布.go
// +build !debug
package main
import (
"fmt"
)
func main() {
fmt.Println("Release build")
}
在这里,go build
会使用main_release.go进行编译,而go build -tags debug
会使用main_debug.go进行编译。
define(DEBUG)
ifdef(`DEBUG',
fmt.Println("Debug message...");
)
在你的Makefile文件中写入以下内容:
all:*.go
mv main.go main.go.bak
m4 main.go.bak > main.go
go build
mv main.go.bak main.go
然后运行"make"命令。
缺点: