Подтвердить что ты не робот

Разница между макросом и препроцессором

Из того, что я понимаю, #define blah 8 - это макрос. Пока # - это предпроцессорная директива.

Можно ли указать # include, # if, # ifdef и т.д. также являются макросами, или они называются чем-то другим? Или это макрос - это просто термин, используемый только для операторов #define?

Пожалуйста, поправьте меня, если я ошибаюсь.

4b9b3361

Ответ 1

Линии, начинающиеся с #, являются директивами предварительной обработки. Это директивы, которые говорят препроцессору что-то сделать.

#include, #if, #ifdef, #ifndef, #else, #elif, #endif, #define, #undef, #line, #error и #pragma все директивы предварительной обработки. (Строка, содержащая только #, также является препроцессорной директивой, но она не имеет эффекта.)

#define blah 8 - это препроцессорная директива, это не макрос. blah - макрос. Эта директива предварительной обработки #define определяет макрос с именем blah как объектный макрос, замененный токеном 8.

Ответ 2

#include, #if и т.д. являются функциями препроцессора.

#define blah 8

Является директивой препроцессора и объявляет новый макрос с именем blah.

  • Макросы являются результатом инструкции #define.
  • Препроцессор - это функция C.

Ответ 3

Предпроцессор: программа, которая выполняет предварительную обработку (включение файла, расширение макроса, условная компиляция).

Макро: слово, определяемое директивой препроцессора #define, которая оценивает какое-либо другое выражение.

Директива препроцессора: специальное ключевое слово #, распознанное препроцессором.

Ответ 4

препроцессор изменяет исходный файл перед передачей его по компилятору.

Рассмотрим препроцессор как программу, которая выполняется перед компилятором.

Директивы препроцессора похожи на команды на программу препроцессора. Некоторые общие директивы препроцессора на C

  • #include <header name> - инструктирует препроцессор вставить текст данного файла в текущий файл.
  • #if <value> - проверяет, истинно ли значение, если оно будет содержать код до #endif
  • #define - Полезно для определения константы и создания макроса

макросы - это имя для некоторого фрагмента кода. Поэтому везде, где используется имя, он получает замененный фрагмент кода программой препроцессора. > .

, например:

#define BUFFER_SIZE 100
В коде, где вы используете BUFFER_SIZE, он заменяется на 100
int a=BUFFER_SIZE;
a становится 100 здесь

В C также имеется множество предопределенных макросов, например __DATE__, __TIME__ и т.д.