Александреску Андрей
Шрифт:
"Оборотная сторона" этого вопроса рассматривается в рекомендации 57.
[Stroustrup00] §10.3.2, §11.2.4 • [Sutter00] §34 • [Sutter02] §39-40
59. Не используйте
Директива
Вывод: не используйте директивы
Вкратце: вы можете и должны свободно и без ограничений использовать объявления и директивы
Пространства имен представляют мощное средство для устранения неоднозначности имен. В большинстве случаев различные программисты выбирают различные имена для своих типов и функций, но в том редком случае, когда они выбрали одинаковые имена, и они должны вместе использоваться в некотором коде, пространства имен позволяют избежать коллизий. Для этого достаточно, чтобы вызывающий код явно квалифицировал имя, указав, имя из какого именно пространства должно использоваться в том или ином случае. Однако в подавляющем большинстве случаев никакой неоднозначности имен не наблюдается. Поэтому вполне можно использовать директивы и объявления
Однако директивы и объявления
Большинство программистов интуитивно понимают, почему директива
Но вот одна распространенная ошибка: многие считают, что использование объявления
Здесь опасность заключается в том, что объявление
Рассмотрим два частных случая. Пусть фрагменты 1, 2 и 3 находятся в трех различных заголовочных файлах
• если