Скрываются ли определения макросов так же как область видимости переменных? - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Добрый вечер. Подскажите пожалуйста, в книгах и статьях обычно не упоминается, скрываются ли определения макросов так же как область видимости переменных?
char a[10] = {
#define DIRECTIVE(count)  (count),
#include "board_system.h"
};
В чем смысл вот так вставлять директивы #define и #include?

Решение задачи: «Скрываются ли определения макросов так же как область видимости переменных?»

textual
Листинг программы
/* ... */
#if defined COND_ONE
extern void FunctionOne(void);        /* Будет прототип функции FunctionOne */
#elif defined COND_TWO
extern int FunctionTwo(int a, int b);  /* Будет прототип функции FunctionTwo */
#else
#error Either of one must be defined! /* А если ничто не определено, будет сгенерирована ошибка */
#endif

Объяснение кода листинга программы

В данном коде определен условный оператор препроцессора if-else. По этому оператору проверяется, какое из условий COND_ONE или COND_TWO выполняется. Если выполняется условие COND_ONE, то в области видимости данного блока кода будет доступен прототип функции FunctionOne. Это означает, что если в коде будет вызвана функция FunctionOne, то компилятор будет знать, что эта функция существует и у нее нет параметров. Если выполняется условие COND_TWO, то в области видимости данного блока кода будет доступен прототип функции FunctionTwo. Это означает, что если в коде будет вызвана функция FunctionTwo, то компилятор будет знать, что эта функция существует и у нее есть два параметра типа int. Если ни одно из условий не выполняется, то генерируется ошибка. Это означает, что компилятор должен знать, какая функция будет вызвана, чтобы корректно сгенерировать исполняемый файл. Следовательно, в данном коде определения макросов не скрываются, а область видимости переменных определяется областью действия условного оператора.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.857 из 5
Похожие ответы