#6. 再谈 gcc
本书你都在用
gcc ,但只使用了 gcc 最基本的功能,其实它可以做更多的事。gcc 就像一把瑞士军刀,它有很多特性,利用这些特性你可以严格控制它生成的代码。
优化
gcc 为了提高代码的性能会做很多工作。如果 gcc 发现你在循环中对一个变量赋了相同的值,它就会把赋值语句移动到循环外;如果一个小函数只在少数几个地方用到了,gcc 就会把它转化为内联代码,然后插到程序中。
虽然 gcc 可以做很多优化,但绝大多数优化选项默认是关闭的。为什么?因为优化需要花很长时间,如果你尚处于开发阶段,通常希望快速编译代码。一旦准备发布代码,就可以打开优化选项。gcc 一共有四个级别的优化:
标志 描述 如果在 如果想提升优化等级,降低编译速度,就选择 如果想再升一级,就选
-O gcc 命令中加上-O (字母 O)标志,就能得到第一级别的优化。
-O2 -O2 。
-O3 -O3,它会使用-O 和-O2 中的所有优化,再附加一些额外的优化。
-Ofast
-Ofast 会打开最高级别的优化,同时编译速度也会降到最低。谨慎使用-Ofast ,因为它生成的代码可能和 C 标准相去甚远。
警告
如果代码没有严重错误,但做了一些可疑的事情,比如把一个类型的值赋给一个错误类型的变量,编译器就会显示警告。你可以用-Wall 选项提高警告检查的门槛:gcc fred.c -Wall -o fred
-Wall 选项表示“所有警告(All Warnings)”,但因为一些历史原因,-Wall 其实并不会显示所有的警告。如果你想让 gcc 那么做,就必须加上-Wextra 选项:gcc fred.c -Wall -Wextra -o fred
如果你希望遵循严格的编译,就可以使用-Werror 选项,只要有一个警告,编译就会失败:
当多人开发同一个项目时,-Werror 就显得特别有用,因为它可以维持代码的质量。
更多 gcc 选项请参阅:
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论