Re[3]: include guards
От: YuriV  
Дата: 10.01.22 07:55
Оценка: +1
Здравствуйте, reversecode, Вы писали:


М>>А что не так с прагма уанс, можно вкратце, и почему это секта?


R>/somedir1/header_file.h

R>/somedir2/header_file.h

R>два хидеры с разным содержанием но одинаковым именем

R>включенные в один модуль
R>считается что при прагма онце будут проблемы

Нет, проблема как раз противоположная. Когда один и тот же файл лежит и включается из разных мест (да такое бывает в реальных проектах) и тогда в случае прагмы эти файлы будут считаться разными и естественно каждый раз включаться заново. А в твоём случае не поможет и ifndef header_file_h. При первом включении header_file.h в таблицу макросов препроцессора будет внесено значение header_file_h и последующие включения header_file.h будут скипнуты. В этом случае как раз и поможет прагма Так что если не знаешь структуры проекта более безопасно писать прагму, но если всё контролируешь, то, конечно, старый добрый ifndef. Единственный минус ifndef — он засирает таблицу макросов ненужной шелухой, но как ты показал сам удар по производительности компиляции незначителен, что в общем не удивительно.
Отредактировано 10.01.2022 8:04 YuriV . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.