Hardx-macros

Что такое X-Macros?

1Постановка

Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.

2Решение

X-Macros — идиома генерации повторяющегося кода из одного списка через переопределяемый макрос X.

// errors.def — единый источник правды
//   X(имя, значение, строка)
X(ERROR_OK,      0, "success")
X(ERROR_FAIL,    1, "failure")
X(ERROR_TIMEOUT, 2, "timeout")

// Генерируем enum
enum class ErrorCode {
#define X(name, val, str) name = val,
#include "errors.def"
#undef X
};

// Генерируем массив строк из того же .def
const char* errorNames[] = {
#define X(name, val, str) str,
#include "errors.def"
#undef X
};

Добавить новый код ошибки — только в .def, все артефакты обновятся. Недостаток: непривычный синтаксис, сложнее читать.

3Как отвечать

  • Сначала уточните условия и ограничения, покажите аналитическое мышление.
  • Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
  • Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡

На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.