iis服务器助手广告广告
返回顶部
首页 > 资讯 > 操作系统 >linux中不常用的gcc命令行选项有哪些
  • 775
分享到

linux中不常用的gcc命令行选项有哪些

2023-06-16 15:06:46 775人浏览 泡泡鱼
摘要

小编给大家分享一下linux中不常用的GCc命令行选项有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!生成 -Wall 选项不包括的警告尽管 gcc 编译器的

小编给大家分享一下linux中不常用的GCc命令行选项有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

生成 -Wall 选项不包括的警告

尽管 gcc 编译器的 -Wall 选项涵盖了绝大多数警告标记,依然有一些警告不能生成。为了生成它们,请使用 -Wextra 选项。

比如,下面的代码:

#include <stdio.h> #include <stdlib.h> int main() {     int i=0;          if(i);         return 1;      return 0;  }

我不小心在 if 条件后面多打了一个分号。现在,如果使用下面的 gcc 命令来进行编译,不会生成任何警告。

gcc -Wall test.c -o test

但是如果同时使用 -Wextra 选项来进行编译:

gcc -Wall -Wextra test.c -o test

会生成下面这样一个警告:

test.c: In function &lsquo;main&rsquo;: test.c:10:8: warning: suggest braces around empty body in an &lsquo;if&rsquo; statement [-Wempty-body]  if(i);

从上面的警告清楚的看到, -Wextra 选项从内部启用了 -Wempty-body  选项,从而可以检测可疑代码并生成警告。下面是这个选项启用的全部警告标记。

  • -Wclobbered

  • -Wempty-body

  • -Wignored-qualifiers

  • -Wmissing-field-initializers

  • -Wmissing-parameter-type (仅针对 C 语言)

  • -Wold-style-declaration (仅针对 C 语言)

  • -Woverride-init

  • -Wsign-compare

  • -Wtype-limits

  • -Wuninitialized

  • -Wunused-parameter (只有和 -Wunused 或 -Wall 选项使用时才会启用)

  • -Wunused-but-set-parameter (只有和-Wunused或-Wall` 选项使用时才会生成)

如果想对上面所提到的标记有更进一步的了解,请查看 gcc 手册。

此外,遇到下面这些情况, -Wextra 选项也会生成警告:

  • 一个指针和整数 0 进行 <, <=, >, 或 >= 比较

  • (仅 c++)一个枚举类型和一个非枚举类型同时出现在一个条件表达式中

  • (仅 C++)有歧义的虚拟基底

  • (仅 C++)寄存器类型的数组加下标

  • (仅 C++)对寄存器类型的变量进行取址

  • (仅 C++)基类没有在派生类的复制构建函数中进行初始化

浮点值的等值比较时生成警告

你可能已经知道,浮点值不能进行确切的相等比较(如果不知道,请阅读与浮点值比较相关的 FAQ)。但是如果你不小心这样做了, gcc  编译器是否会报出错误或警告?让我们来测试一下:

下面是一段使用 == 运算符进行浮点值比较的代码:

#include<stdio.h> void compare(float x, float y) {     if(x == y)     {         printf("\n EQUAL \n");     } } int main(void) {     compare(1.234, 1.56789);     return 0;  }

使用下面的 gcc 命令(包含 -Wall 和 -Wextra 选项)来编译这段代码:

gcc -Wall -Wextra test.c -o test

遗憾的是,上面的命令没有生成任何与浮点值比较相关的警告。快速看一下 gcc 手册,在这种情形下可以使用一个专用的 -Wfloat-equal  选项。

下面是包含这个选项的命令:

gcc -Wall -Wextra -Wfloat-equal test.c -o test

下面是这条命令产生的输出:

test.c: In function &lsquo;compare&rsquo;: test.c:5:10: warning: comparing floating point with == or != is unsafe [-Wfloat-equal]  if(x == y)

正如上面你所看到的输出那样, -Wfloat-equal 选项会强制 gcc 编译器生成一个与浮点值比较相关的警告。

这儿是gcc 手册关于这一选项的说明:

这背后的想法是,有时,对程序员来说,把浮点值考虑成近似***精确的实数是方便的。如果你这样做,那么你需要通过分析代码,或者其他方式,算出这种计算方式引入的***或可能的***误差,然后进行比较时(以及产生输出时,不过这是一个不同的问题)允许这个误差。特别要指出,不应该检查是否相等,而应该检查两个值是否可能出现范围重叠;这是用关系运算符来做的,所以等值比较可能是搞错了。

如何更好的管理 gcc 命令行选项

如果在你使用的 gcc 命令中,命令行选项列表变得很大而且很难管理,那么你可以把它放在一个文本文件中,然后把文件名作为 gcc  命令的一个参数。之后,你必须使用 @file 命令行选项。

比如,下面这行是你的 gcc 命令:

gcc -Wall -Wextra -Wfloat-equal test.c -o test

然后你可以把这三个和警告相关的选项放到一个文件里,文件名叫做 gcc-options:

$ cat gcc-options -Wall -Wextra -Wfloat-equal

这样,你的 gcc 命令会变得更加简洁并且易于管理:

gcc @gcc-options test.c -o test

下面是 gcc 手册关于 @file 的说明:

从文件中读取命令行选项。读取到的选项随之被插入到原始 @file  选项所在的位置。如果文件不存在或者无法读取,那么这个选项就会被当成文字处理,而不会被删除。

文件中的选项以空格分隔。选项中包含空白字符的话,可以用一个由单引号或双引号包围完整选项。任何字符(包括反斜杠: '\')均可能通过一个 '\'  前缀而包含在一个选项中。如果该文件本身包含额外的 @file 选项,那么它将会被递归处理。

以上是“linux中不常用的gcc命令行选项有哪些”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网操作系统频道!

--结束END--

本文标题: linux中不常用的gcc命令行选项有哪些

本文链接: https://www.lsjlt.com/news/284097.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • linux中不常用的gcc命令行选项有哪些
    小编给大家分享一下linux中不常用的gcc命令行选项有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!生成 -Wall 选项不包括的警告尽管 gcc 编译器的...
    99+
    2023-06-16
  • Linux中GCC常用命令有哪些
    这篇文章主要介绍了Linux中GCC常用命令有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。GCC是由GNU开发的编程语言译器其目的是为GNU操作系统专门编写的一款编译器...
    99+
    2023-06-28
  • Linux中有哪些常用的GCC命令
    Linux中有哪些常用的GCC命令?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1. 简介GCC 的意思也只是 GNU C Compiler 而已。经过了这么多...
    99+
    2023-06-12
  • GCC常用命令有哪些
    小编给大家分享一下GCC常用命令有哪些,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!GCC 编译器是 Linux 系统下最常用的 C/C++ 编译器,大部分 Linux 发行版中都会默认安装。GCC 编译器通常以gcc命令...
    99+
    2023-06-27
  • Linux中有哪些不常用的命令
    这篇文章将为大家详细讲解有关Linux中有哪些不常用的命令,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1)pgreppgrep名字前有个p,我们可以猜到这和进程相关,又是grep,当然这是进程相关的gr...
    99+
    2023-06-16
  • 常用的linux命令行有哪些
    常用的Linux命令行有:1. cd:切换工作目录2. ls:列出目录内容3. pwd:显示当前工作目录的完整路径4. mkdir:...
    99+
    2023-06-04
    linux命令行 linux
  • Linux gcc命令的参数有哪些
    本篇内容主要讲解“Linux gcc命令的参数有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux gcc命令的参数有哪些”吧!Linux常用命令gcc命令 使用GNU推出的基于C/C...
    99+
    2023-06-28
  • 不常用的Linux命令有哪些
    这篇文章主要为大家展示了“不常用的Linux命令有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“不常用的Linux命令有哪些”这篇文章吧。1)pgreppgrep名字前有个p,我们可以猜到这...
    99+
    2023-06-13
  • Linux elm命令的选项有哪些
    本文小编为大家详细介绍“Linux elm命令的选项有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“Linux elm命令的选项有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。Linux常用命令elm ...
    99+
    2023-06-28
  • Linux命令行下有哪些常用的svn命令
    这篇文章主要介绍Linux命令行下有哪些常用的svn命令,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Linux命令行下将文件checkout到本地目录svn checkout path(path是服务器上的目录)例...
    99+
    2023-06-17
  • Linux命令行下常用svn命令有哪些
    本篇内容主要讲解“Linux命令行下常用svn命令有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux命令行下常用svn命令有哪些”吧!本文讲述了Linux命令行下常用svn命令的使用...
    99+
    2023-06-17
  • mysql命令行中常用的命令有哪些
    这篇文章主要介绍mysql命令行中常用的命令有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!mysql命令行常用命令第一招、mysql服务的启动和停止net stop mysql...
    99+
    2024-04-02
  • Linux中的常用命令有哪些
    这篇文章给大家分享的是有关Linux中的常用命令有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。       1、系统信息  arch 显示机器的处理器架构  unam...
    99+
    2023-06-04
  • Linux中常用的命令有哪些
    这篇文章主要介绍了Linux中常用的命令有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Linux中常用的命令有哪些文章都会有所收获,下面我们一起来看看吧。一、前言Linux是一种自由和开放源代码的类UNI...
    99+
    2023-06-16
  • Linux中Rsync命令有哪些备份选项
    这篇文章将为大家详细讲解有关Linux中Rsync命令有哪些备份选项,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。常常备份是良好的习惯,只是这么好习惯只有在无数次的顿足捶胸、呼天抢地的懊恼之后,才会勉勉强...
    99+
    2023-06-15
  • Linux中有哪些常用命令
    这篇文章给大家分享的是有关Linux中有哪些常用命令的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。系统信息 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显...
    99+
    2023-06-09
  • Linux命令行中常用的计算器有哪些
    本文小编为大家详细介绍“Linux命令行中常用的计算器有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“Linux命令行中常用的计算器有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1)bcbc在默认的情...
    99+
    2023-06-28
  • Linux系统安装gcc命令有哪些
    小编给大家分享一下Linux系统安装gcc命令有哪些,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!源码安装以安装gcc为例,登陆https://gcc.gnu.org/,下载自己想要的版本的gcc安装包 上传gcc-4.1...
    99+
    2023-06-28
  • Linux常用的命令有哪些
    今天小编给大家分享一下Linux常用的命令有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。系统信息arch 显示机器的处...
    99+
    2023-06-26
  • linux中有哪些常用的backtrack命令
    本篇文章为大家展示了linux中有哪些常用的backtrack命令,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。基本 passwd 修改密码。 挂载本地分区: mount /dev/hda1 /mn...
    99+
    2023-06-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作