Непростой препроцессор - C (СИ)

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

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

#define el_resolveVALength(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, N, ...) N
 
#define ELPP_VARIADIC_FUNC_MSVC(variadicFunction, variadicArgs) variadicFunction variadicArgs
 
#define ELPP_VARIADIC_FUNC_MSVC_RUN(variadicFunction, ...) ELPP_VARIADIC_FUNC_MSVC(variadicFunction, (__VA_ARGS__))
 
#define el_getVALength(...) ELPP_VARIADIC_FUNC_MSVC_RUN(el_resolveVALength, 0, ## __VA_ARGS__,\
10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0)
как el_getVALength узнает кол-во аргументов и какую роль там играет '##'?

Решение задачи: «Непростой препроцессор»

textual
Листинг программы
#define SHIFT(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, N, ...) N

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

В данном коде определен макрос SHIFT, который выполняет сдвиг элементов в заданном списке. Список элементов представлен в виде аргументов, переданных в макрос. Вот список элементов кода с их номерами и описанием:

  1. define SHIFT - это определение макроса с именем SHIFT.

  2. (_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, N, ...) - это список элементов, переданных в макрос. Каждый элемент имеет свой номер и может быть представлен в виде значения.
  3. N - это значение, которое будет возвращено макросом после сдвига элементов. Таким образом, код выполняет сдвиг элементов в заданном списке и возвращает новое значение.

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


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

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

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