首页
题库
面试
求职
学习
竞赛
More+
所有博客
搜索面经/职位/试题/公司
搜索
我要招人
去企业版
登录 / 注册
首页
>
试题广场
>
下面哪些特性可能
[不定项选择题]
下面哪些特性可能导致代码体积膨胀:
宏定义
模板
内联函数
递归
查看正确选项
添加笔记
求解答(24)
邀请回答
收藏(1231)
分享
14个回答
添加回答
72
leobuzhi
A选项宏定义本质是文本替换,肯定是
可能导致代码体积膨胀的
B选项模板在编译时生成对应的类/函数,所以也是可能的。
C选项重点解释,内联也是在编译时替换,所以也
可能导致代码体积膨胀。
但是注意了:
若这个函数被调用了一次,那么
内联
直接被插入到函数调用出,就直接没有了这个函数符号了,若加上优化,这一句代码可能会被优化没有,所以,也可能使
代码体积减小
。
D选项是容易爆栈,不是代码区。
发表于 2016-02-13 10:25:20
回复(3)
36
马小李
A宏定义会单纯的替换,也就是如果宏定义替换的内容会成倍复制,所以会导致代码膨胀
B模板的调用,会根据调用的参数,生成模板对应的实际调用的函数体,如果调用的参数不同,会生成不同的代码,所以会导致代码膨胀
C内联函数会拷贝至调用的位置,如果调用多次回导致代码膨胀
发表于 2015-09-08 20:41:59
回复(3)
16
程序员鱼皮
这里的膨胀是指代码编译时较编辑时体积大。 宏定义,模板,内联函数都能在编辑时精简我们的代码。但在编译时宏定义会文本替换,模板会加上类型(类似java泛型),内联函数也会替换成函数代码。
发表于 2018-09-08 11:44:04
回复(3)
5
莫笑☁️輕狂
不是特别清楚这道题,说一下自己的理解
当时笔试选了a和c选项,宏定义就是纯粹的替换,如果宏定义用的特别多的话,感觉整个代码的质量都会有所下降
c选项内联函数,没记错的话内联函数就应该是把这个函数的指针直接映射到函数体的位置,这样做个人感觉肯定会导致代码体积膨胀的。。
b选项不清楚原因
d选项,递归不会导致体积膨胀,但是大量递归会导致栈区溢出
发表于 2015-09-08 18:23:00
回复(3)
1
喜欢拱白菜的鳄鱼在改简历
感觉b有点牵强啊,使用模板本身就是为了介绍相似代码的书写,按这个题的意思,反而又导致了代码体积的膨胀
发表于 2022-09-30 15:36:36
回复(0)
0
星月a
宏定义是单纯的替换,会导致代码膨胀;模板根据不同的类型实参,会生成不同的代码,会导致代码膨胀;内联函数在编译时会将函数体嵌入在每一个调用处,类似于宏定义。(网上找的)
编辑于 2024-04-09 15:38:02
回复(0)
0
在写总结的鳄鱼很友好
妈的就选了个d
发表于 2023-07-19 20:04:06
回复(0)
0
逆袭的黑马
不太懂什么是代码体积膨胀,这题有点靠运气。
发表于 2022-06-14 18:13:44
回复(0)
0
Anotherniukewang
A选项宏定义本质是文本替换,肯定是可能导致代码体积膨胀的 B选项模板在编译时生成对应的类/函数,所以也是可能的。 C选项重点解释,内联也是在编译时替换,所以也 可能导致代码体积膨胀。 但是注意了: 若这个函数被调用了一次,那么 内联 直接被插入到函数调用出,就直接没有了这个函数符号了,若加上优化,这一句代码可能会被优化没有,所以,也可能使 代码体积减小 。 D选项是容易爆栈,不是代码区。
发表于 2017-09-06 07:40:10
回复(0)
0
细雨湿身
板在编译时生成对应的类/函数,所以也是可能的。
发表于 2016-09-24 17:55:24
回复(0)
0
huixieqingchun
要注意理解。递归不会导致代码体积膨胀,过多的递归调用只会导致栈的溢出。
发表于 2016-06-04 09:55:31
回复(0)
0
钉子
这种导致代码膨胀的特性一般是出现在编译阶段,而非运行阶段。而宏定义,模板和
内联
函数都是出现在程序的编译阶段,都会实现代码替换(宏定义,
内联
函数)或者生成特定的代码(
内联
函数)。
发表于 2015-11-17 14:37:09
回复(0)
0
陈胖骑单车
宏定义不是应该是精简代码的么?怎么会导致膨胀,不是很懂,谁帮我解释下。谢谢。
发表于 2015-09-21 16:15:02
回复(2)
0
DenceChen
解释一下
发表于 2015-09-08 17:02:15
回复(0)
这道题你会答吗?花几分钟告诉大家答案吧!
提交观点
问题信息
C++
来自:
腾讯2016研发工程师...
难度:
14条回答
1231收藏
11344浏览
热门推荐
相关试题
运行 ldd hello 可以得到...
百度
C++
评论
(3)
如下代码,result变量的输出结...
C++
评论
(70)
来自
腾讯2016研发工程师笔...
请给出能够插入的成绩记录
数据库
评论
(63)
来自
腾讯2016研发工程师笔...
编程题 ,按照要求创建Java 应...
Java
评论
(1)
市场与销售的区别在哪里?
市场营销
评论
(1)
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题