猿问
回到首页
个人中心
反馈问题
注册登录
下载APP
首页
课程
实战
体系课
手记
专栏
慕课教程
未使用的功能是否得到优化?
一个相当简单的问题...目前,编译器往往会进行大量的优化。它们还会从最终输出中删除未使用的功能吗?
牛魔王的故事
浏览 760
回答 3
3回答
大话西游666
这取决于编译器。Visual C ++ 9可以做到这一点- static在编译阶段删除未使用的功能(甚至有C4505警告),可以在链接阶段根据链接器设置删除具有外部链接的未使用功能。
0
0
0
江户川乱折腾
如果使用进行编译/Gy和链接,则MSVC(Visual Studio编译器/链接器)可以执行此操作/OPT:REF。如果您使用编译-ffunction-sections -fdata-sections并链接,那么GCC / binutils可以执行此操作--gc-sections。不了解其他编译器。
0
0
0
翻阅古今
通常,答案是:是:用于未使用的static功能。否: 用于未使用的全局可用功能。编译器不知道是否有其他编译单元引用它。同样,大多数对象模块类型不允许在编译后删除函数,也无法为链接器提供一种方法来判断是否存在内部引用。(链接程序可以告诉您是否存在外部链接程序。)某些链接程序可以执行此操作,但是有很多事情可以解决此问题。当然,除非它是共享库的一部分,否则任何链接程序都不会不必要地加载其自身模块中的函数。(显然,因为将来可能会在运行时引用它。)
0
0
0
打开App,查看更多内容
随时随地看视频
慕课网APP
相关分类
C++
typedef入门问题
1 回答
C
typedef入门问题
1 回答
继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续