返回介绍

#6. 再谈 gcc

发布于 2024-10-10 23:21:41 字数 1217 浏览 0 评论 0 收藏 0

本书你都在用

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 选项请参阅:

http://gcc.gnu.org/onlinedocs/gcc

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文