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 подскажет развёрнутый ответ в реальном времени.