GCC 中文手册(中)

                                    GCC 中文手册(中)



-Wparentheses
在某些情况下如果忽略了括号 , 编译器就发出警告 .

-Wtemplate-debugging
当在 C++ 程序中使用 template 的时候 , 如果调试 (debugging) 没有完全生效 , 编译器就发出警告 . ( 仅用于 C++).

-Wall
结合所有上述的 `-W' 选项 . 通常我们建议避免这些被警告的用法,我们相信 , 恰当结合宏的使用能够 轻易避免这些用法。

剩下的`-W...'选项不包括在`-Wall',因为我们认为在必要情况下,这些被编译器警告 的程序结构,可以合理的用在"干净的"程序中.

-Wtraditional
如果某些程序结构在传统 C 中的表现和 ANSI C 不同 , 编译器就发出警告 .

   *
宏参出现在宏体的字符串常量内部 . 传统 C 会替换宏参 , ANSI C 则视其为常量的一部分 .

   *
某个函数在块 (block) 中声明为外部 , 但在块结束后才调用 .

   *
switch 语句的操作数类型是 long.

-Wshadow
一旦某个局部变量屏蔽了另一个局部变量 , 编译器就发出警告 .

-Wid-clash-len
一旦两个确定的标识符具有相同的前 len 个字符 , 编译器就发出警告 . 他可以协助你开发一些将要在某些 过时的 , 危害大脑的编译器上编译的程序 .

-Wpointer-arith
任何语句如果依赖于函数类型的大小 (size) 或者 void 类型的大小 , 编译器就发出警告 . GNU C 为了 便于计算 void * 指针和函数指针 , 就把这些类型的大小定义为 1.

-Wcast-qual
一旦某个指针强制类型转换以便移除类型修饰符时 , 编译器就发出警告 . 例如 , 如果把 const char * 强制转换为普通的 char * , 警告就会出现 .

-Wcast-align
一旦某个指针类型强制转换时 , 导致目标所需的地址对齐 (alignment) 增加 , 编译器就发出警告 . 例如 , 某些机器上 只能在 2 4 字节边界上访问整数 , 如果在这种机型上把 char * 强制转换成 int * 类型 , 编译器就发出警告 .

-Wwrite-strings
规定字符串常量的类型是 const char[length], 因此 , 把这样的地址复制给 non-const char * 指针将产生警告 . 这些警告能够帮助你在编译期间发现企图写入字符串常量 的代码 , 但是你必须非常仔细的在声明和原形中使用 const, 否则他们只能带来麻烦 ; 所以我们没有让 `-Wall' 提供这些警告 .

-Wconversion
如果某函数原形导致的类型转换和无函数原形时的类型转换不同 , 编译器就发出警告 . 这里包括定点数和浮点数的 互相转换 , 改变定点数的宽度或符号 , 除非他们和缺省声明 (default promotion) 相同 .

-Waggregate-return
如果定义或调用了返回结构或联合的函数 , 编译器就发出警告 . ( 从语言角度你可以返回一个数组 , 然而同样会 导致警告 .)

-Wstrict-prototypes
如果函数的声明或定义没有指出参数类型 , 编译器就发出警告 . ( 如果函数的前向引用说明指出了参数类型 , 则允许后面 使用旧式风格的函数定义 , 而不会产生警告 .)

-Wmissing-prototypes
如果没有预先声明函数原形就定义了全局函数 , 编译器就发出警告 . 即使函数定义自身提供了函数原形也会产生这个警告 . 他的目的是检查没有在头文件中声明的全局函数 .

-Wmissing-declarations
如果没有预先声明就定义了全局函数 , 编译器就发出警告 . 即使函数定义自身提供了函数原形也会产生这个警告 . 这个选项 的目的是检查没有在头文件中声明的全局函数 .

-Wredundant-decls
如果在同一个可见域某定义多次声明 , 编译器就发出警告 , 即使这些重复声明有效并且毫无差别 .

-Wnested-externs
如果某 extern 声明出现在函数内部 , 编译器就发出警告 .

-Wenum-clash
对于不同枚举类型之间的转换发出警告 ( 仅适用于 C++).

-Wlong-long
如果使用了 long long 类型就发出警告 . 该警告是缺省项 . 使用 `-Wno-long-long' 选项能够防止这个警告 . `-Wlong-long' `-Wno-long-long' 仅在 `-pedantic' 之下才起作用 .

-Woverloaded-virtual
( 仅适用于 C++.) 在继承类中 , 虚函数的定义必须匹配虚函数在基类中声明的类型特征 (type signature). 当 继承类声明了某个函数 , 它可能是个错误的尝试企图定义一个虚函数 , 使用这个选项能够产生警告 : 就是说 , 当某个函数和基类 中的虚函数同名 , 但是类型特征不符合基类的任何虚函数 , 编译器将发出警告 .

-Winline
如果某函数不能内嵌 (inline), 无论是声明为 inline 或者是指定了 -finline-functions 选项 , 编译器都将发出警告 .

-Werror
视警告为错误 ; 出现任何警告即放弃编译 .

 

调试选项(DEBUGGING OPTION)

GNU CC 拥有许多特别选项 , 既可以调试用户的程序 , 也可以对 GCC 排错 :
-g
以操作系统的本地格式 (stabs, COFF, XCOFF, DWARF). 产生调试信息 . GDB 能够使用这些调试信息 .

在大多数使用stabs格式的系统上, `-g'选项启动只有GDB才使用的额外调试信息;这些信息使GDB 调试效果更好,但是有可能导致其他调试器崩溃,或拒绝读入程序.如果你确定要控制是否生成额外的信息, 使用`-gstabs+', `-gstabs', `-gxcoff+', `-gxcoff', `-gdwarf+',`-gdwarf' (见下文).

和大多数C编译器不同, GNU CC允许结合使用`-g'`-O'选项.优化的代码偶尔制造 一些惊异的结果:某些声明过的变量根本不存在;控制流程直接跑到没有预料到的地方;某些语句因为计算结果是常量或已经确定而 没有执行;某些语句在其他地方执行,因为他们被移到循环外面了.

然而它证明了调试优化的输出是可能的.对可能含有错误的程序使用优化器是合理的.

如果GNU CC支持输出多种调试信息,下面的选项则非常有用.

-ggdb
以本地格式 ( 如果支持 ) 输出调试信息 , 尽可能包括 GDB 扩展 .

-gstabs
stabs 格式 ( 如果支持 ) 输出调试信息 , 不包括 GDB 扩展 . 这是大多数 BSD 系统上 DBX 使用的格式 .

-gstabs+
stabs 格式 ( 如果支持 ) 输出调试信息 , 使用只有 GNU 调试器 (GDB) 理解的 GNU 扩展 . 使用这些扩展有可能导致 其他调试器崩溃或拒绝读入程序 .

-gcoff
COFF 格式 ( 如果支持 ) 输出调试信息 . 这是在 System V 第四版以前的大多数 System V 系统上 SDB 使用的 格式 .

-gxcoff
XCOFF 格式 ( 如果支持 ) 输出调试信息 . 这是 IBM RS/6000 系统上 DBX 调试器使用的格式 .

-gxcoff+
XCOFF 格式 ( 如果支持 ) 输出调试信息 , 使用只有
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 你可以通过以下几种方式下载GNU GCC中文手册: 1. 官方网站下载:你可以访问GNU GCC的官方网站(https://gcc.gnu.org/)并查找相关的文档下载页面。有时候,官方网站会提供中文手册的下载链接或者提供其他语言的手册,并且通常会有最新的更新。你可以在官方网站上搜索相关的链接,然后根据指引下载中文手册。 2. 在线文档查找:一些编程类的网站提供了各种编程语言的中文手册。你可以通过搜索引擎搜索“GNU GCC中文手册”或者“GCC中文文档”,然后查找可靠的网站,比如CSDN、简书、GitHub等。这些网站通常会有编程相关的教程、手册以及技术文档,其可能也包括GNU GCC中文手册。 3. 社区论坛下载:在编程社区或者论坛,有很多热心的开发者会分享自己整理或者翻译的编程手册和教程。你可以加入这些社区或论坛,并在对应的板块或下载区寻找GCC中文手册。在这些平台上,你也可以提问,向其他开发者寻求帮助。 需要注意的是,GNU GCC是一个开源项目,并且有众多的贡献者参与其,因此可能存在多个版本的中文手册。在下载之前,最好确认手册的版本与你使用的GCC版本相对应,以获得最准确和最合适的信息。如果有需要,你也可以查阅英文的GCC手册,因为英文手册通常会比中文手册更为详细和全面。 ### 回答2: 在GNU GCC (GNU Compiler Collection)的官方网站上,您可以找到关于中文手册的下载链接。下面是一些下载中文手册的途径: 1. GNU GCC官方网站: 您可以访问www.gnu.org/software/gcc获取最新版本的GNU GCC软件以及相关的中文文档。在该网站,您可以找到GCC手册的在线版本,也可以下载PDF版本的手册。 2. GNU镜像站点: GNU GCC中文手册也可以在GNU镜像站点下载。GNU镜像站点位于不同的地理位置,并提供了大量的GNU软件和文档的下载。您可以在线搜索并访问适合您的镜像站点,然后浏览GNU GCC的文件夹,找到中文手册的下载链接。 3. 在线文档: 除了下载中文手册,您还可以通过在线文档来学习和使用GNU GCC。在GNU GCC官方网站上,您可以找到HTML格式的在线文档,其包括GCC的功能、命令和选项的详细说明。 请注意,GNU GCC是一套强大而复杂的编译器工具集,手册提供了广泛的信息和使用指南,包括编译器的命令行选项、语法规则和示例。使用手册时,请根据您的需求和经验水平选择适合的章节和内容。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值