Программирование на C

Макрос на языке C

Макрос на языке C
Макрос на языке C - это фрагмент кода, которому присвоено имя. Когда имя используется в любом месте программы, значение макроса заменяется перед компиляцией программы. В этой статье мы подробно рассмотрим, как написать макрос на языке Си.

Рассмотрим следующий код:

НАЧАЛО
ЦЕЛОЕ n = 5;
PRINT ("Значение n равно% d"; n);
КОНЕЦ

Приведенный выше код не является допустимым кодом C.

Но следующий код действителен:

// Пример1.c
#define START int main ()
#define END
#define INTEGER int
# определить ПЕЧАТЬ (A, B) printf (A, B)
НАЧАЛО
ЦЕЛОЕ n = 5;
PRINT ("Значение n равно% d"; n);
КОНЕЦ

Перед компиляцией макросы START, INTEGER, PRINT и END были заменены их значениями, и код становится действительным кодом C. Мы можем проверить это с помощью следующей команды:

gcc -E Пример1.c

Эта команда отобразится после раскрытия всех макросов.

Теперь мы увидим разные типы макросов:

1. Макросы, подобные объекту:

Синтаксис:

#define macro_name macro_value

Если макрос занимает более одной строки, мы можем сделать это следующим образом:

#define macro_name macro_value1 \
macro_value2 \
macro_value3
#define MAX 200

Этот макрос выглядит как объект данных, поэтому макрос этого типа называется объектно-подобным макросом.

// Пример2.c
//#включать
#define MAX 200
int main ()

printf ("МАКСИМАЛЬНОЕ значение:% d", МАКС);
возврат 0;

В Пример 2.c, МАКС это макрос. Из вывода мы видим, что МАКСИМУМ заменяется его значением 200.

2. Функциональные макросы:

Синтаксис:

#define macro_name () macro_value

macro_name это определяемое пользователем имя макроса. Пара скобок ставится после macro_name. Между macro_name и скобки. Мы также можем передавать аргументы в этом типе макросов.

#define add (x, y) x + y

Этот макрос выглядит как вызов функции, поэтому этот тип макроса называется макросом, подобным функции.

// Example3.c
#define add (x, y) x + y
int main ()

int a;
float b;
а = добавить (4,5);
b = добавить (2.5,3.6)
возврат 0;

В Example3.c, мы видели, что в отличие от функции C, макрос заменяет только код аргументами, не вычисляя его. Итак, мы можем передавать разные типы данных, используя один и тот же макрос.

Если мы поместим пробел между именем макроса и круглыми скобками, он будет работать так же, как объектный макрос. Ниже приведен пример C, иллюстрирующий это.

// Example4.c
#define add (x, y) x + y
int main ()

int a;
float b;
а = добавить (4,5);
b = добавить (2.5,3.6)

В примере 4.c, мы видели, что макрос add заменяется на (x, y) x + y . То же, что и объектный макрос.

3. Макрос для вставки токена:
В языке C для вставки токена используется оператор ##. Используя этот оператор, мы можем объединить два действительных токена в один действительный токен.
Пример:

// Пример5.c
#define MARGE (x, y) x ## y
int main ()

int число = МАРЖ (52,34);
возврат 0;

Если мы попытаемся вставить токен, который не создает действительный токен, компилятор C выдает ошибку или предупреждение.

// Пример6.c
#define MARGE (x, y) x ## y
int main ()

int число = МАРЖ (52, +);
возврат 0;

В Пример6.c, у нас есть сообщение об ошибке, потому что после комбинации двух токенов мы получаем недопустимый токен '52 + '.

4. Макрос для натягивания:
В языке C оператор # используется для преобразования параметра макроса в строковую константу. Когда оператор # предшествует параметру макроса, параметр преобразуется в строковый литерал. Строкование может использоваться для макросов объектно-подобных и функциональных.
Пример:

// Example7.c
#define STRINGIZING (x) #x
int main ()

printf (STRINGIZING (Привет, мир));
возврат 0;

В Пример7.c у нас есть строка «Hello World» с помощью макроса STRINGIZING.

Заключение:

В этой статье рассказывались обо всех типах макроподобных Объектные макросы, Функциональные макросы, Макрос для вставки токена, Макрос для натягивания и макрос для натягивания на языке C. Теперь мы можем без всяких сомнений использовать макрос в нашей программе на C.

OpenTTD против Simutrans
Создание собственного транспортного симулятора может быть увлекательным, расслабляющим и чрезвычайно увлекательным занятием. Вот почему вам нужно попр...
Учебник OpenTTD
OpenTTD - одна из самых популярных бизнес-симуляторов. В этой игре вам нужно создать замечательный транспортный бизнес. Тем не менее, вы начнете в нач...
SuperTuxKart для Linux
SuperTuxKart - отличная игра, созданная для того, чтобы бесплатно познакомить вас с Mario Kart в вашей системе Linux. Играть в нее довольно сложно и в...