Mediumdefinemacros
Что делает #define и какие есть виды макросов?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
`#define` создаёт макрос — тупую текстовую подстановку без понимания C++. Виды: object-like, function-like, variadic.
#define PI 3.14159 // object-like
#define MAX(a, b) ((a) > (b) ? (a) : (b)) // function-like
#define LOG(fmt, ...) printf(fmt, __VA_ARGS__) // variadic
// Опасности:
int i = 0, j = 10;
int m = MAX(i++, j); // i++ дважды (двойное вычисление)В современном C++ макросы заменяют: constexpr для констант, inline/шаблоны для функций. Макросы остаются для conditional compilation и stringification.
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.