freeCodeCamp/guide/russian/c/macros/index.md

77 lines
2.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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