首页 > 试题广场 >

下面哪些特性可能

[不定项选择题]
下面哪些特性可能导致代码体积膨胀:
  • 宏定义
  • 模板
  • 内联函数
  • 递归
A选项宏定义本质是文本替换,肯定是可能导致代码体积膨胀的
B选项模板在编译时生成对应的类/函数,所以也是可能的。
C选项重点解释,内联也是在编译时替换,所以也 可能导致代码体积膨胀。
但是注意了:
若这个函数被调用了一次,那么 内联 直接被插入到函数调用出,就直接没有了这个函数符号了,若加上优化,这一句代码可能会被优化没有,所以,也可能使 代码体积减小
D选项是容易爆栈,不是代码区。
发表于 2016-02-13 10:25:20 回复(3)
A宏定义会单纯的替换,也就是如果宏定义替换的内容会成倍复制,所以会导致代码膨胀
B模板的调用,会根据调用的参数,生成模板对应的实际调用的函数体,如果调用的参数不同,会生成不同的代码,所以会导致代码膨胀
C内联函数会拷贝至调用的位置,如果调用多次回导致代码膨胀
发表于 2015-09-08 20:41:59 回复(3)
这里的膨胀是指代码编译时较编辑时体积大。 宏定义,模板,内联函数都能在编辑时精简我们的代码。但在编译时宏定义会文本替换,模板会加上类型(类似java泛型),内联函数也会替换成函数代码。
发表于 2018-09-08 11:44:04 回复(3)
不是特别清楚这道题,说一下自己的理解
当时笔试选了a和c选项,宏定义就是纯粹的替换,如果宏定义用的特别多的话,感觉整个代码的质量都会有所下降
c选项内联函数,没记错的话内联函数就应该是把这个函数的指针直接映射到函数体的位置,这样做个人感觉肯定会导致代码体积膨胀的。。
b选项不清楚原因

d选项,递归不会导致体积膨胀,但是大量递归会导致栈区溢出
发表于 2015-09-08 18:23:00 回复(3)
感觉b有点牵强啊,使用模板本身就是为了介绍相似代码的书写,按这个题的意思,反而又导致了代码体积的膨胀
发表于 2022-09-30 15:36:36 回复(0)
宏定义是单纯的替换,会导致代码膨胀;模板根据不同的类型实参,会生成不同的代码,会导致代码膨胀;内联函数在编译时会将函数体嵌入在每一个调用处,类似于宏定义。(网上找的)
编辑于 2024-04-09 15:38:02 回复(0)
妈的就选了个d
发表于 2023-07-19 20:04:06 回复(0)
不太懂什么是代码体积膨胀,这题有点靠运气。
发表于 2022-06-14 18:13:44 回复(0)
A选项宏定义本质是文本替换,肯定是可能导致代码体积膨胀的 B选项模板在编译时生成对应的类/函数,所以也是可能的。 C选项重点解释,内联也是在编译时替换,所以也 可能导致代码体积膨胀。 但是注意了: 若这个函数被调用了一次,那么 内联 直接被插入到函数调用出,就直接没有了这个函数符号了,若加上优化,这一句代码可能会被优化没有,所以,也可能使 代码体积减小 。 D选项是容易爆栈,不是代码区。
发表于 2017-09-06 07:40:10 回复(0)
板在编译时生成对应的类/函数,所以也是可能的。
发表于 2016-09-24 17:55:24 回复(0)
要注意理解。递归不会导致代码体积膨胀,过多的递归调用只会导致栈的溢出。
发表于 2016-06-04 09:55:31 回复(0)
这种导致代码膨胀的特性一般是出现在编译阶段,而非运行阶段。而宏定义,模板和内联 函数都是出现在程序的编译阶段,都会实现代码替换(宏定义,内联 函数)或者生成特定的代码(内联 函数)。
发表于 2015-11-17 14:37:09 回复(0)
宏定义不是应该是精简代码的么?怎么会导致膨胀,不是很懂,谁帮我解释下。谢谢。
发表于 2015-09-21 16:15:02 回复(2)
解释一下
发表于 2015-09-08 17:02:15 回复(0)