项目:修复文档错误
This commit is contained in:
parent
24ea745154
commit
51b2c356c9
@ -55,7 +55,7 @@ enum color { red, green=5, blue };
|
|||||||
|
|
||||||
在 C++ 中,有两种简单的定义常量的方式:
|
在 C++ 中,有两种简单的定义常量的方式:
|
||||||
|
|
||||||
- 使用 **#define** 预处理器。
|
- 使用 `#define` 预处理器。
|
||||||
- 使用 **const** 关键字。
|
- 使用 **const** 关键字。
|
||||||
|
|
||||||
#### 实例
|
#### 实例
|
||||||
|
@ -17,7 +17,7 @@ C 语言编译器在编译程序之前,会先使用预处理器(preprocessor
|
|||||||
|
|
||||||
所有预处理指令都是一行的,除非在行尾使用反斜杠,将其折行。指令结尾处不需要分号。
|
所有预处理指令都是一行的,除非在行尾使用反斜杠,将其折行。指令结尾处不需要分号。
|
||||||
|
|
||||||
## #define
|
## `#define`
|
||||||
|
|
||||||
`#define`是最常见的预处理指令,用来将指定的词替换成另一个词。它的参数分成两个部分,第一个参数就是要被替换的部分,其余参数是替换后的内容。每条替换规则,称为一个宏(macro)。
|
`#define`是最常见的预处理指令,用来将指定的词替换成另一个词。它的参数分成两个部分,第一个参数就是要被替换的部分,其余参数是替换后的内容。每条替换规则,称为一个宏(macro)。
|
||||||
|
|
||||||
@ -246,7 +246,7 @@ X(5, 4, 3.14, "Hi!", 12)
|
|||||||
printf("%s\n", X(1,2,3)); // Prints "1, 2, 3"
|
printf("%s\n", X(1,2,3)); // Prints "1, 2, 3"
|
||||||
```
|
```
|
||||||
|
|
||||||
## #undef
|
## `#undef`
|
||||||
|
|
||||||
`#undef`指令用来取消已经使用`#define`定义的宏。
|
`#undef`指令用来取消已经使用`#define`定义的宏。
|
||||||
|
|
||||||
@ -267,7 +267,7 @@ gcc -ULIMIT foo.c
|
|||||||
|
|
||||||
上面示例中的`-U`参数,取消了宏`LIMIT`,相当于源文件里面的`#undef LIMIT`。
|
上面示例中的`-U`参数,取消了宏`LIMIT`,相当于源文件里面的`#undef LIMIT`。
|
||||||
|
|
||||||
## #include
|
## `#include`
|
||||||
|
|
||||||
`#include`指令用于编译时将其他源码文件,加载进入当前文件。它有两种形式。
|
`#include`指令用于编译时将其他源码文件,加载进入当前文件。它有两种形式。
|
||||||
|
|
||||||
@ -297,7 +297,7 @@ gcc -Iinclude/ -o code code.c
|
|||||||
|
|
||||||
`#include`最常见的用途,就是用来加载包含函数原型的头文件(后缀名为`.h`),参见《多文件编译》一章。多个`#include`指令的顺序无关紧要,多次包含同一个头文件也是合法的。
|
`#include`最常见的用途,就是用来加载包含函数原型的头文件(后缀名为`.h`),参见《多文件编译》一章。多个`#include`指令的顺序无关紧要,多次包含同一个头文件也是合法的。
|
||||||
|
|
||||||
## #if...#endif
|
## `#if...#endif`
|
||||||
|
|
||||||
`#if...#endif`指令用于预处理器的条件判断,满足条件时,内部的行会被编译,否则就被编译器忽略。
|
`#if...#endif`指令用于预处理器的条件判断,满足条件时,内部的行会被编译,否则就被编译器忽略。
|
||||||
|
|
||||||
@ -362,7 +362,7 @@ gcc -DDEBUG=1 foo.c
|
|||||||
|
|
||||||
上面示例中,`-D`参数指定宏`DEBUG`为`1`,相当于在代码中指定`#define DEBUG 1`。
|
上面示例中,`-D`参数指定宏`DEBUG`为`1`,相当于在代码中指定`#define DEBUG 1`。
|
||||||
|
|
||||||
## #ifdef...#endif
|
## `#ifdef...#endif`
|
||||||
|
|
||||||
`#ifdef...#endif`指令用于判断某个宏是否定义过。
|
`#ifdef...#endif`指令用于判断某个宏是否定义过。
|
||||||
|
|
||||||
@ -446,7 +446,7 @@ gcc -DDEBUG=1 foo.c
|
|||||||
|
|
||||||
上面示例中,不同架构的系统需要定义对应的宏。代码根据不同的宏,加载对应的头文件。
|
上面示例中,不同架构的系统需要定义对应的宏。代码根据不同的宏,加载对应的头文件。
|
||||||
|
|
||||||
## #ifndef...#endif
|
## `#ifndef...#endif`
|
||||||
|
|
||||||
`#ifndef...#endif`指令跟`#ifdef...#endif`正好相反。它用来判断,如果某个宏没有被定义过,则执行指定的操作。
|
`#ifndef...#endif`指令跟`#ifdef...#endif`正好相反。它用来判断,如果某个宏没有被定义过,则执行指定的操作。
|
||||||
|
|
||||||
@ -518,7 +518,7 @@ C Version: 201710
|
|||||||
*/
|
*/
|
||||||
```
|
```
|
||||||
|
|
||||||
## #line
|
## `#line`
|
||||||
|
|
||||||
`#line`指令用于覆盖预定义宏`__LINE__`,将其改为自定义的行号。后面的行将从`__LINE__`的新值开始计数。
|
`#line`指令用于覆盖预定义宏`__LINE__`,将其改为自定义的行号。后面的行将从`__LINE__`的新值开始计数。
|
||||||
|
|
||||||
@ -537,7 +537,7 @@ C Version: 201710
|
|||||||
|
|
||||||
上面示例中,下一行的行号重置为`300`,文件名重置为`newfilename`。
|
上面示例中,下一行的行号重置为`300`,文件名重置为`newfilename`。
|
||||||
|
|
||||||
## #error
|
## `#error`
|
||||||
|
|
||||||
`#error`指令用于让预处理器抛出一个错误,终止编译。
|
`#error`指令用于让预处理器抛出一个错误,终止编译。
|
||||||
|
|
||||||
@ -578,7 +578,7 @@ newish.c:14:2: error: #error Not C11
|
|||||||
#endif
|
#endif
|
||||||
```
|
```
|
||||||
|
|
||||||
## #pragma
|
## `#pragma`
|
||||||
|
|
||||||
`#pragma`指令用来修改编译器属性。
|
`#pragma`指令用来修改编译器属性。
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user