Макросы в С

Макросы в С Программирование и разработка

Всякий раз, когда код C компилируется в операционной системе Linux, он передается такому компилятору, который переводит код C в двоичный код перед завершением компиляции и запуском кода C. Препроцессор макроса существует как другое имя препроцессора C. На всем языке C макрос характеризуется как последовательность операторов кода, заданных как метка и затем отбрасываемых, когда требуется этот набор кода. Эти макросы часто начинаются с выражения «#», и компилятор выполняет объявления, которые начинаются с такого знака. Существует два типа макросов C, которые мы обсудим в сегодняшней статье следующим образом:

Объектные макросы: если структуры данных продавались беспорядочно, объектные макросы будут отброшены.

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

Объект как макрос

Макрос, подобный объекту, представляет собой идентификатор, заменяющий значение. Это распространенный способ описания числовых констант. Итак, откройте свою операционную систему Linux и войдите в нее. На момент публикации статьи мы использовали систему Ubuntu 20.04 Linux. После быстрого входа в систему запустите консольную оболочку, нажав «Ctrl + Alt + T» или используя строку поиска в области «Действия».

Пример 1

Итак, создайте файл типа C «test.c» или как угодно назовите его через редактор GNU Nano Editor. Этот редактор использовался для редактирования таких файлов в операционной системе Linux.

nano test.c

Файл откроется быстро. Включите библиотеку «stdio.h». Код представлен на картинке. Мы использовали объект #define как макрос для переменной «new» со значением «42». Мы не определяли его, поскольку мы определяем обычную переменную с точкой с запятой в конце. Нет необходимости в «;» в макросах. Теперь код содержит «основной» метод, который нужно выполнить. В этом основном методе есть один оператор печати. Оператор печати показывает результат переменной «new» с некоторой строкой в ​​ней. Сохраните обновленный файл и вернитесь в терминал через «Ctrl + S» и «Ctrl + X» соответственно.

Читайте также:  Создайте веб-сайт с помощью React и Tailwind CSS

Сохраните обновленный файл и вернитесь в терминал через «Ctrl + S» и «Ctrl + X» соответственно

Перед запуском файла сначала необходимо скомпилировать код. Поэтому убедитесь, что в вашей системе Linux установлен компилятор языка C. На момент написания этого руководства мы использовали компилятор «gcc». Если вы также хотите установить его, попробуйте выполнить следующий запрос в своей консоли.

sudo apt install gcc

После установки компилятора мы скомпилируем код с запросом «gcc». Этот запрос должен содержать имя файла для компиляции, как показано ниже.

gcc test.c

Теперь компиляция прошла успешно и ошибок не было; мы запустим наш файл с помощью инструкции «a.out», как указано ниже. Выходные данные представлены на изображении, показывающем значение макропеременной.

./a.out

Пример 2

Теперь у нас есть следующий пример объектно-подобного макроса. Этот пример будет немного отличаться от предыдущего. Итак, откройте тот же файл, чтобы обновить наши строки кода.

nano test.c

Мы определили переменную val со значением float «5.765» в качестве объектно-подобного макроса в верхней части кода после библиотеки. Внутри основной функции две переменные типа float, «r» и «a», были инициализированы без значения во время инициализации. Переменная «r» будет использоваться как радиус, а переменная «a» будет использоваться как «площадь». Операторы печати покажут пользователю сообщение, чтобы ввести радиус по своему выбору. Строка scanf использовалась для получения ввода от пользователя через терминал. Это значение, введенное пользователем, будет считаться значением с плавающей запятой и будет привязано к переменной «r». Мы вычисляли площадь «а», вычисляя объектно-подобную макропеременную и радиус, введенные пользователем в следующей строке. После этого рассчитанная площадь будет отображаться на экране в виде оператора печати.

Скомпилируйте код документа с помощью «gcc»

Скомпилируйте код документа с помощью «gcc».

gcc test.c

Запустите файл и введите радиус по запросу, и он рассчитает площадь для введенного вами значения.

./a.out

Функция как макрос

В функции, подобной макросу, мы определим функцию вместо любой переменной. Итак, приступим.

Пример 1

Откройте документ C test.c, чтобы изменить код.

nano test.c

Функция «слияние» используется как макрос с двумя переменными в своем параметре. Вы должны определить логику функции при использовании макрос-функции #define, потому что ваша машина не понимает без нее. Итак, мы определили «a ## b». Основной метод покажет слияние двух значений целочисленного типа, переданных в качестве аргумента функции слияния в терминале через оператор печати.

Читайте также:  Программирование сокетов Python

Функция «слияние» используется как макрос с двумя переменными в своем параметре

Компиляцию можно выполнить с помощью ключевого слова «gcc».

gcc test.c

При выполнении файла «test.c» вы получите объединенное значение обоих двух значений целочисленного типа, которое было передано в операторе печати методу слияния.

./a.out

Пример 2

Давайте рассмотрим последний пример такой функции, как макрос. На этот раз мы печатаем строковое значение с определенным пределом. Откройте C-файл «test.c».

nano test.c

Мы реализовали функцию MACRO, в которой переменная «a» представляет начальное значение, а «lim» представляет конец ограничения. Пока «a» меньше, чем «lim», он будет печатать строку «Aqsa» и увеличивать переменную «a». Основной метод содержит начальное значение «a», а метод MACRO имеет значение «8», переданное в нем переменной «lim», поэтому он должен напечатать строку «8» раз.

Мы реализовали функцию MACRO, в которой переменная «a» представляет начальное значение

Скомпилировать через:

gcc test.c

При выполнении кода строка «Aqsa» печатается 8 раз.

./a.out

Заключение

В этом руководстве мы рассмотрели как объектные, так и функциональные макросы. Мы надеемся, что он развеет все ваши сомнения и прояснит ваши представления о макросах C.

Оцените статью
bestprogrammer.ru
Добавить комментарий