77 lines
2.3 KiB
Markdown
77 lines
2.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) |