77 lines
1.3 KiB
Markdown
77 lines
1.3 KiB
Markdown
---
|
||
title: Macros in C
|
||
localeTitle: C中的宏
|
||
---
|
||
## C中的宏
|
||
|
||
宏是一段具有给定名称的代码。使用名称时,它将替换为宏的内容。
|
||
|
||
#### 定义宏
|
||
|
||
`#define`关键字用于定义新宏。接下来是名称和内容。按照惯例,宏名称以大写字母书写。
|
||
|
||
```C
|
||
#define PI 3.14
|
||
```
|
||
|
||
如果你这样使用宏:
|
||
|
||
```C
|
||
printf("Value of PI: %d", PI);
|
||
```
|
||
|
||
写这个是一样的:
|
||
|
||
```C
|
||
printf("Value of PI: %d", 3.14);
|
||
```
|
||
|
||
#### 宏的类型
|
||
|
||
有两种类型的宏。上面显示`Object-like`宏和`Function-like`宏。
|
||
|
||
#### 功能类宏
|
||
|
||
类似函数使用相同的`#define`关键字。区别在于您在函数名后使用了一对括号。
|
||
|
||
```C
|
||
#define hello_world() printf("Hello World!")
|
||
```
|
||
|
||
所以打电话:
|
||
|
||
```C
|
||
hello_world()
|
||
```
|
||
|
||
你得到:
|
||
|
||
```C
|
||
printf("Hello World!");
|
||
```
|
||
|
||
您也可以设置参数:
|
||
|
||
```C
|
||
#define hello(X) printf("Hello " X "!")
|
||
```
|
||
|
||
现在打电话:
|
||
|
||
```C
|
||
hello("World");
|
||
```
|
||
|
||
你得到了相同的:
|
||
|
||
```C
|
||
printf("Hello World!");
|
||
```
|
||
|
||
#### 更多信息:
|
||
|
||
[GCC在线文档:宏](https://gcc.gnu.org/onlinedocs/cpp/Macros.html)
|
||
|
||
[GCC在线文档:类似对象的宏](https://gcc.gnu.org/onlinedocs/cpp/Object-like-Macros.html#Object-like-Macros)
|
||
|
||
[GCC在线文档:类似函数的宏](https://gcc.gnu.org/onlinedocs/cpp/Function-like-Macros.html#Function-like-Macros) |