#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