CTF-All-In-One/doc/4.3_gcc_arg.md
2017-12-02 23:38:19 +08:00

25 lines
1.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 4.3 GCC 编译参数解析
#### 控制标准版本的编译选项
- `-ansi`:告诉编译器遵守 C 语言的 ISO C90 标准。
- `-std=`:通过使用一个参数来设置需要的标准。
- `c89`:支持 C89 标准。
- `iso9899:1999`:支持 ISO C90 标准。
- `gnu89`:支持 C89 标准。
#### 控制标准版本的常量
这些常量(#define可以通过编译器的命令行选项来设置或者通过源代码总的 `#define` 语句来定义。
- `__STRICT_ANSI__`:强制使用 C 语言的 ISO 标准。这个常量通过命令行选项 `-ansi` 来定义。
- `_POSIX_C_SOURCE=2`:启用由 IEEE Std1003.1 和 1003.2 标准定义的特性。
- `_BSD_SOURCE`:启用 BSD 类型的特性。
- `_GNU_SOURCE`:启用大量特性,其中包括 GNU 扩展。
#### 编译器的警告选项
- `-pedantic`:除了启用用于检查代码是否遵守 C 语言标准的选项外,还关闭了一些不被标准允许的传统 C 语言结构,并且禁用所有的 GNU 扩展。
- `-Wformat`:检查 printf 系列函数所使用的参数类型是否正确。
- `Wparentheses`:检查是否总是提供了需要的圆括号。当想要检查一个复杂结构的初始化是否按照预期进行时,这个选项就很有用。
- `Wswitch-default`:检查是否所有的 switch 语句都包含一个 default case。
- `Wunused`:检查诸如声明静态函数但没有定义、未使用的参数和丢弃返回结果等情况。
- `Wall`:启用绝大多数 gcc 的警告选项,包括所有以 -W 为前缀的选项。