Spec-Zone.ru › GCC 14 CPP

2.5 Альтернативы обёртке #ifndef

CPP поддерживает ещё два способа указания, что заголовочный файл должен быть прочитан только один раз. Ни один из них не такой портативный, как обёртка ‘#ifndef’, и мы рекомендуем не использовать их в новых программах, за исключением случая, когда ‘#import’ является стандартной практикой в Objective-C.

CPP поддерживает вариант ‘#include’ под названием ‘#import’, который включает файл, но делает это не более одного раза. Если вы используете ‘#import’ вместо ‘#include’, то вам не нужны условные операторы внутри заголовочного файла для предотвращения многократного включения содержимого. ‘#import’ является стандартом в Objective-C, но считается устаревшим расширением в C и C++.

‘#import’ не является хорошо спроектированной функцией. Она требует, чтобы пользователи заголовочного файла знали, что оно должно быть включено только один раз. Гораздо лучше, чтобы разработчик заголовочного файла написал файл таким образом, чтобы пользователям не нужно было об этом знать. Использование обёртки ‘#ifndef’ достигает этой цели.

В текущей реализации единственное использование ‘#import’ предотвратит повторное чтение файла, как ‘#import’, так и ‘#include’. Не полагайтесь на это; не используйте ‘#import’ и ‘#include’ для ссылки на один и тот же заголовочный файл.

Другой способ предотвратить включение заголовочного файла более одного раза — с помощью директивы ‘#pragma once’ (см. Директивы). ‘#pragma once’ не имеет проблем, которые возникают у ‘#import’, но не распознаётся всеми препроцессорами, поэтому вы не можете полагаться на него в портативной программе.

© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-14.2.0/cpp/Alternatives-to-Wrapper-_0023ifndef.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API