为什么内联函数不能递归?
看了一些网上的资料,也学了一点简单的汇编指令,还是不能理解内联函数为什么不能递归,求大神指点。 调用内联函数,编译器会将内联函数,**拷贝** 到主调函数中。请问,如何是你,会如何拷贝,递归函数?
参考资料: https://www.tutorialspoint.com/cplusplus/cpp_inline_functions.htm 内联函数不能调用本身 https://blog.csdn.net/zuoside__lord/article/details/80354223 qiuyouzhi 发表于 2020-5-25 08:43
https://blog.csdn.net/zuoside__lord/article/details/80354223
大神,是因为一些地址的特性,还是因为开销? 青出于蓝 发表于 2020-5-25 08:25
内联函数不能调用本身
大神,为什么呀? 〃忝書γě渎ぐ 发表于 2020-5-25 09:56
大神,是因为一些地址的特性,还是因为开销?
你没有看我发的链接吗?
如果函数的逻辑控制循环啥的太复杂了,编译器就不再认为
它是一个内联函数,递归也是一样,需要来来回回复制函数里面的代码好多遍
开销就会很大。 qiuyouzhi 发表于 2020-5-25 10:01
你没有看我发的链接吗?
如果函数的逻辑控制循环啥的太复杂了,编译器就不再认为
它是一个内联函数,递 ...
这条看了,可编译器为什么要这样做呢,想知道原理。 赚小钱 发表于 2020-5-25 11:18
调用内联函数,编译器会将内联函数,**拷贝** 到主调函数中。
请问,如何是你,会如何拷贝,递归函数?
...
C++内联函数是与类一起使用的强大概念。如果函数是内联的,编译器在编译时调用函数的每个点放置该函数的代码的副本。
对内联函数的任何更改都可能需要重新编译函数的所有客户端,因为编译器需要再次替换所有代码,否则它将继续使用旧功能。
好像理解了,但不知为什么呢,如果是普通函数,编译器就不需要重新编译?
页:
[1]