Easypredefined-macros

Что такое predefined macros (__FILE__, __LINE__, __func__)?

1Постановка

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

2Решение

Встроенные макросы компилятора для логирования и диагностики. __func__ — predefined identifier (C++11), не макрос.

#include <cstdio>

void doWork(int x) {
    if (x < 0) {
        printf("%s:%d [%s] invalid x=%d\n",
               __FILE__, __LINE__, __func__, x);
        // output.cpp:5 [doWork] invalid x=-1
    }
}

// Версия C++
#if __cplusplus >= 201703L
    // C++17 или новее
#endif

Основные: __FILE__, __LINE__, __DATE__, __TIME__, __cplusplus (201103/201402/201703/202002), платформенные _WIN32/__linux__/_MSC_VER.

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

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

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