Для защиты заголовочных файлов от повторного включения в C++ используются директивы условной компиляции. Наиболее распространенным способом является использование `#ifndef`, `#define` и `#endif`.
#ifndef — проверяет, не было ли имя макроса определено ранее.
#define — определяет имя макроса.
#endif — завершает блок условной компиляции.
Пример:
#ifndef MY_HEADER_H
#define MY_HEADER_H
// Содержимое заголовочного файла
#endif /* MY_HEADER_H */
Таким образом, директива, которая чаще всего используется для защиты от повторного включения, это `#ifndef`.
Ответ: #ifndef