Заголовочные файлы.

Традиционно все заголовочные файлы имели расширение .h.

Таким образом, реали­зации C++ вводили заголовочные файлы, такие как <map.h> и <iostream.h>. Из сооб­ражений совместимости большинство реализаций по-прежнему так и делают.

Когда комитету по стандартам понадобились заголовочные файлы для новых вер­сий стандартных библиотек и для добавляемых возможностей библиотеки, имено­вание этих заголовочных файлов стало проблемой. Использование старых имен с расширением .h породило бы трудности с совместимостью.

И было решено для имен стандартных заголовочных файлов отказаться от суффикса .h. Он все равно избыто­чен, поскольку обозначение < > и так указывает, что речь идет об имени стандартного заголовочного файла.

Таким образом, стандартная библиотека предоставляет заголовочные файлы без расширения, такие как <iostream> и <тар>.

Объявления в этих файлах распо­лагаются в пространстве имен std. Устаревшие заголовочные файлы располагают свои объявления в глобальном пространстве имен и используют расширение h.

Пример:

#include<iostream>

int main ()

{ std::cout« "Здравствуй, мир\\п"; }

Если не удается скомпилировать, используем традици­онную версию:

#include<iostream.h>

int main ()

{ cout« "Здравствуй, мир \\ п"; }

Стандартная библиотека .

Реализации C++, предшествовавшие стандарту, могут не иметь некото­рых частей стандартной библиотеки.

В большинстве из них будут потоки ввода/вы­вода, нешаблонный класс complex, различные строковые классы и стандартная биб­лиотека С. Однако могут отсутствовать ассоциативные массивы ( тар), списки ( list), valarray и т. д. В таких случаях пользуйтесь доступными библиотеками (как пра­вило, являющимися собственностью той или иной фирмы), которые бы позволили впоследствии перейти к стандарту при обновлении вашей реализации. Обычно луч­ше пользоваться нестандартными строками, списками и ассоциативными массивами, чем при отсутствии этих классов в стандартной библиотеке возвращаться к програм­мированию в стиле С.

Ранние реализации стандартной библиотеки были неполными.

 

С оветы для реализации правильного кода из С в С++:

 

1. Для изучения C++ используйте самую полную из доступных вам реализа­ций стандартного C++;.

2. При преобразовании программы с С на C++ сначала убедитесь, что последовательно ис­пользуются объявления функций (прототипы) и стандартные заголовочные файлы.

3. При преобразовании программы с С на C++ переименуйте переменные С, которые совпа­дают с ключевыми словами C++; .

4. При преобразовании программы с С на C++ замените все вызовы

malloc () на new.

5. При преобразовании программы с С на C++ нет неявного преобразования от типа int к перечислениям. При необходимости используйте явное преобразование типов.

6. Средства из пространства имен std определяются в заголовке без суффикса (т. е. std::cout объявлена в <iostream>).

Старые реализации содержат средства стандарт­ной библиотеки в глобальном пространстве имен, объявленные в заголовочных файлах с суффиксом h (т. е. ::cout объявлена в <iostream.h>).

7. Используйте <string> для доступа к std:<string> (<string.h> содержит функции для строк в стиле С).

8. Для каждого стандартного заголовочного файла языка С <X.h>, который помещает име­на в глобальное пространство имен, заголовочный файл <Х> помещает имена в про­странство имен std.

9. Многие системы содержат заголовочный файл "String.h", определяющий строковый тип. Отметим, что такие строки отличаются от типа string из стандартной библиотеки.

10. Предпочитайте стандартные средства нестандартным.

11. Используйте extern "С" при объявлении С-функции.