Использование pragma один раз в файле .cpp

#c #pragma

Вопрос:

Недавно, читая некоторые фрагменты кода, я столкнулся с несколькими файлами .cpp, которые содержались #pragma once в начале файла. Я знаю, что он обычно используется в файлах .h в качестве защиты.

Каковы случаи, когда #pragma once следует/можно/необходимо использовать в файлах .cpp?

Комментарии:

1. Вероятно, кто-то включил *.cpp в сборку «Unity» (не движок/SDK). Видишь en.wikipedia.org/wiki/Unity_build

2. Для плохих случаев, когда вы включаете файлы cpp.

3. @RichardCritten: Сборка Unity не должна включать в себя одни и те же файлы дважды, кстати (и файл, включающий файлы cpp, создается в этом случае, нет?)

4. @Jarod42 Ой. Это так противно, что я даже не подумал об этом 😉

5. Скорее всего, автор просто забыл удалить их при разработке приложения. Некоторые разработчики сначала создают файл заголовка, а затем сохраняют его как .cpp для дальнейшей модификации. В этот момент легко не заметить эту прагму.

Ответ №1:

#pragma once не следует использовать в исходных файлах, его единственная цель — действовать в качестве защитника. Я не причиню большого вреда .Файлы cpp обычно будут «сканироваться» один раз во время компиляции в любом случае. Примечание: Clang tidy предупредит вас, если вы это сделаете.

 Warning clang-diagnostic-pragma-once-outside-header #pragma once in main file