在 c 里面可以通过宏替换,把一段逻辑,插入到代码里面,可以省去对函数调用的运行影响。简单来说内联会快点。
有童鞋在 go 做过相关研究吗?
上面内联概念用的大的范围,细想不妥。内联和宏替换是有区别的,虽然一般场景差不多去除函数调用,比如 通常会实现max宏
#define max(a, b) (a) > (b) ? (a):(b)
指定内联关键字
int __inline__ max(int a, int b) {
return a > b ?a :b;
}
如果重新提问。直接问go里面有类似宏替换的黑科技,或者指定内联关键字。
1
cmdOptionKana 2020-12-01 10:22:35 +08:00
Go 想这样做也很容易,官方工具链就提供 generate, 但绝大多情况下都不需要优化到这个程度,或者说有这种需求的项目通常会选择 C/Rust
|
2
guonaihong OP @cmdOptionKana 有相关文档吗?我看下。还是在 golang wiki 里面找?
|
3
whitehack 2020-12-01 10:28:45 +08:00
|
4
guonaihong OP @whitehack 感谢。。。
|
5
0x11901 2020-12-01 17:15:47 +08:00
其实 u1s1,你在 c 里面也就是暗示编译器你想内联,实际内不内联还是编译器说了算的。就算你写的时候根本不知道啥叫内联函数,编译器没准也给你内联了。
所以我觉得你压根没必要纠结这事,相信 go 的编译器吧 |
7
0x11901 2020-12-02 14:36:21 +08:00
@ly841000 讲道理你一个函数里面写循环写递归再“强制”内联,编译器肯定是会拒绝的……然后我仔细看了一眼楼主的问题,这好像说的不是内联函数吧?宏替换???
|
8
guonaihong OP @0x11901 我举的例子不太好,直接关注内联就行。
|