Цель '#pragma once
' - предотвратить повторное включение заголовка. Если он у вас есть в исходном файле (обычно это файл «.c»), вы не будете читать его дважды (обычно - я знаю об исходном файле, который включает себя [и мне это не нравится); не использует или не хочет #pragma once
, хотя!). Таким образом, «основным файлом» в этом контексте является, например, файл, указанный в командной строке, а не заголовок.
Что касается предмета вопроса - руководство GCC, похоже, не имеет исчерпывающего списка. Я не знаю, есть ли он на самом деле.