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)
|