Mediumpragma

Чем #pragma отличается от #pragma once?

1Постановка

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

2Решение

`#pragma` — директива для compiler-specific инструкций. Незнакомая #pragma игнорируется. #pragma once — одна из самых популярных прагм.

#pragma once                          // защита от повторного include

#pragma pack(push, 1)                 // отключить padding
struct Packet { char t; int v; };     // sizeof == 5
#pragma pack(pop)

#pragma message("building...")        // информационное сообщение

#pragma GCC diagnostic push           // управление warnings (GCC/Clang)
#pragma GCC diagnostic ignored "-Wunused"
#pragma GCC diagnostic pop

#pragma omp parallel for             // OpenMP
for (int i = 0; i < n; ++i) { /* ... */ }

Стандарт C++ не определяет список pragmas — всё implementation-defined. Основные: once, pack, message, warning/diagnostic, omp.

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

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

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