请阅读【嵌入式开发学习必备专栏 之 ARM GCC 编译专栏】
文章目录
概述
在使用 GCC (GNU Compiler Collection) 进行编译时,可以通过不同的编译参数(标志)来控制编译行为、优化级别、警告输出等。以下是您列出的一些 GCC 编译参数的介绍:
编译参数详细介绍
参数 | 作用 |
---|---|
–all-warnings | 与-Wall 相同。 请改用后一个选项。 |
–extra-warnings | 与-Wextra 相同。 请改用后一个选项。 |
-W | 不建议使用此开关;请改用 -Wextra |
-Wabi | 当结果与 ABI 相容的编译器的编译结果不同时给出警告 |
-Waddress | 使用可疑的内存地址时给出警告 |
-Waggregate-return | 当返回结构、联合或数组时给出警告 |
-Waliasing | 为可能的虚参重叠给出警告 |
-Walign-commons | 此参数已被 弃用。在以前的 GCC 版本中,它用于控制 COMMON 块(未初始化的全局变量)中变量的对齐方式。 |
-Wall | 启用大部分警告信息 |
-Wampersand | 若延续字符常量中缺少 & 则给出警告 |
-Warray-bounds | 当数组访问越界时给出警告 |
-Warray-temporaries | 创建临时数组时给出警告 |
-Wassign-intercept | 当 Objective-C 赋值可能为垃圾回收所介入时给出警告 |
-Wattributes | 当对属性的使用不合适时给出警告 |
-Wbad-function-cast | 当把函数转换为不兼容类型时给出警告 |
-Wbuiltin-macro-redefined | 当内建预处理宏未定义或重定义时给出警告 |
-Wc+±compat | 当在 C 语言中使用了 C 与 C++ 交集以外的构造时给出警告 |
-Wc++0x-compat | 当 C++ 构造的意义在 ISO C++ 1998 和 ISO C++ 200x 中不同时给出警告 |
-Wcast-align | 当转换指针类型导致对齐边界增长时给出警告 |
-Wcast-qual | 当类型转换丢失限定信息时给出警告 |
-Wchar-subscripts | 当下标类型为“char”时给出警告 |
-Wcharacter-truncation | 对被截断的字符表达式给出警告 |
-Wclobbered | 对能为"longjmp"或"vfork"所篡改的变量给出警告 |
-Wcomment | 对可能嵌套的注释和长度超过一个物理行长的 C++ 注释给出警告 |
-Wcomments | -Wcomment 的同义词 |
-Wconversion | 当隐式类型转换可能改变值时给出警告 |
-Wconversion-extra | 对大多数隐式类型转换给出警告 |
-Wconversion-null | 将 NULL 转换为非指针类型时给出警告 |
-Wcoverage-mismatch | 这个选项控制了当使用 Gcov 进行测试覆盖率分析时,如果编译的源代码和测试运行时使用的源代码不匹配,GCC 是否应该发出警告。这可以帮助识别测试覆盖率数据可能不准确的情形。 |
-Wcpp | 如果在 C 文件中使用了传统的预处理指令(即没有以 # 开头的预处理指令),这个选项会导致 GCC 发出警告。 |
-Wctor-dtor-privacy | 当所有构造函数和析构函数都是私有时给出警告 |
-Wdeclaration-after-statement | 当声明出现在语句后时给出警告 |
-Wdeprecated | 使用不建议的编译器特性、类、方法或字段时给出警告 |
-Wdeprecated-declarations | 对 __attribute__((deprecated)) 声明给出警告 |
-Wdisabled-optimization | 当某趟优化被禁用时给出警告 |
-Wdiv-by-zero | 对编译时发现的零除给出警告 |
-Wdouble-promotion | 对从“float”到“double”的隐式转换给出警告 |
-Weffc++ | 对不遵循《Effetive C++》的风格给出警告 |
-Wempty-body | 当 if 或 else 语句体为空时给出警告 |
-Wendif-labels | 当 #elif 和 #endif 后面跟有其他标识符时给出警告 |
-Wenum-compare | 对不同枚举类型之间的比较给出警告 |