Заголовочные файлы.
Традиционно все заголовочные файлы имели расширение .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 "С" при объявлении С-функции.