mirror of
https://github.com/nganhkhoa/CTF-All-In-One.git
synced 2024-12-25 11:41:16 +07:00
25 lines
1.5 KiB
Markdown
25 lines
1.5 KiB
Markdown
# 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 为前缀的选项。
|