gpt4 book ai didi

go - const if 语句是否与 Go 中的 #ifdef 宏做同样的事情?

转载 作者:IT王子 更新时间:2023-10-29 00:38:12 26 4
gpt4 key购买 nike

Go 中没有文本预处理。与 Java 和其他类似语言一样,如果我想删除一段代码,我可以使用 const 值并用 if 包围代码。

如果我这样做,编译器是否优化了来自 AST 和生成代码的代码?还是每次都执行条件?

编辑:如果我想复制#ifdef,最好的方法是什么?

最佳答案

带有常量条件的 If 语句与 #ifdef 不同,因为无论如何,里面的代码总是被编译。但是,编译器会在可能的情况下对其进行优化。考虑这个程序:

package main

import (
"fmt"
)

func main() {
if false {
fmt.Println("Hello, world!")
}
}

如果我们运行 go tool 6g -S test.go,下面是 main 函数的汇编输出:

--- prog list "main" ---
0000 (test.go:7) TEXT main+0(SB),$40-0
0001 (test.go:11) RET ,

死代码消失了,所以它所做的就是返回。

如果您确实需要有条件地编译部分代码,最好通过构建系统来完成。

关于go - const if 语句是否与 Go 中的 #ifdef 宏做同样的事情?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11252846/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com