Читаем Программирование. Принципы и практика использования C++ Исправленное издание полностью

• В языке С используются структуры, глобальные функции и указатели на функции (раздел 27.2.3).

• Шаблоны и подставляемые функции

• В языке С используются макросы (раздел 27.8).

• Исключения

• В языке С используются коды ошибок, ошибочные возвращаемые значения и т.п.

• Перегрузка функций

• В языке С каждой функции дается отдельное имя.

• Операторы new/delete

• В языке С используются функции malloc/free и отдельный код для инициализации и удаления.

• Ссылки

• В языке С используются указатели.

• Ключевое слово const в константных выражениях

• В языке С используются макросы.

• Объявления в инструкциях for и объявления как инструкции

• В языке С все объявления должны быть расположены в начале блока, а для каждого набора определений начинается новый блок.

• Тип bool

• В языке С используется тип int.

• Операторы static_cast, reinterpret_cast и const_cast

• В языке С используются приведения вида (int)a, а не static(a).

• // комментарии

• В языке С используются комментарии /* ... */

  На языке С написано много полезных программ, поэтому этот список должен напоминать нам о том, что ни одно свойство языка не является абсолютно необходимым. Большинство языковых возможностей — и даже большинство свойств языка С — разработано только для удобства программистов. В конце концов, при достаточном запасе времени, мастерстве и терпении любую программу можно написать на ассемблере. Обратите внимание на то, что благодаря близости моделей языков С и С++ к реальным компьютерам они позволяют имитировать многие стили программирования.

Остальная часть этой главы посвящена объяснению того, как писать полезные программы без помощи этих свойств. Наши основные советы по использованию языка С++ сводятся к следующему.

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

• Когда пишете программу на языке C, считайте его подмножеством языка C++.

• Используйте предупреждения компилятора для проверки аргументов функций.

• Контролируйте стиль программирования на соответствие стандартам, когда пишете большие программы (см. раздел 27.2.2).

Многие детали, касающиеся несовместимости языков С и С++, устарели и носят скорее технический характер. Однако, для того чтобы читать и писать на языке С, вы не обязаны помнить об этом.

• Компилятор сам напомнит вам, если вы станете использовать средства языка С, которых нет в языке C.

• Если вы следуете правилам, перечисленным выше, то вряд ли столкнетесь с чем-либо таким, что в языке С имеет другой смысл по сравнению с языком С++.

В отсутствие всех возможностей языка С++ некоторые средства в языке С приобретают особое значение.

• Массивы и указатели.

• Макросы.

• Оператор typedef.

• Оператор sizeof.

• Операторы приведения типов.

В этой главе будет приведено несколько примеров использования таких средств.

  Я ввел в язык С++ комментарии //, унаследованные от его предшественника, языка BCPL, когда мне надоело печатать комментарии вида /* ... */. Комментарии // приняты в большинстве диалектов языка, включая версию C99, поэтому их можно использовать совершенно безопасно. В наших примерах мы будем использовать комментарии вида /* ... */ исключительно для того, чтобы показать, что мы пишем программу на языке C. В языке C99 реализованы некоторые возможности языка C++ (а также некоторые возможности, несовместимые с языком С++), но мы будем придерживаться версии C89, поскольку она используется более широко.

<p id="AutBody_Root535"><strong>27.1.3. Стандартная библиотека языка С</strong></p>

  Естественно, возможности библиотек языка С++, зависящие от классов и шаблонов, в языке С недоступны. Перечислим некоторые из них.

• Класс vector.

• Класс map.

• Класс set.

• Класс string.

• Алгоритмы библиотеки STL: например, sort, find и copy.

• Потоки ввода-вывода iostream.

• Класс regex.

Из-за этого библиотеки языка С часто основаны на массивах, указателях и функциях. К основной части стандартной библиотеки языка С относятся следующие заголовочные файлы.

. Общие утилиты (например, malloc и free; см. раздел 27.4).

. Стандартный механизм ввода-вывода; см. раздел 27.6.

. Манипуляции со строками и памятью в стиле языка C; см. раздел 27.5.

. Стандартные математические функции для операций над числами с плавающей точкой; см. раздел 24.8.

. Коды ошибок математических функций из заголовочного файла ; см. раздел 24.8.

. Размеры целочисленных типов; см. раздел 24.2.

. Функции даты и времени; см. раздел 26.6.1.

. Условия для отладки (debug assertions); см. раздел 27.9.

. Классификация символов; см. раздел 11.6.

. Булевы макросы.

Полное описание стандартной библиотеки языка С можно найти в соответствующем учебнике, например в книге K&R. Все эти библиотеки (и заголовочные файлы) также доступны и в языке С++.

<p id="AutBody_Root536"><strong>27.2. Функции</strong></p>

В языке C есть несколько особенностей при работе с функциями.

• Может существовать только одна функция с заданным именем.

Перейти на страницу:

Похожие книги

97 этюдов для архитекторов программных систем
97 этюдов для архитекторов программных систем

Успешная карьера архитектора программного обеспечения требует хорошего владения как технической, так и деловой сторонами вопросов, связанных с проектированием архитектуры. В этой необычной книге ведущие архитекторы ПО со всего света обсуждают важные принципы разработки, выходящие далеко за пределы чисто технических вопросов.?Архитектор ПО выполняет роль посредника между командой разработчиков и бизнес-руководством компании, поэтому чтобы добиться успеха в этой профессии, необходимо не только овладеть различными технологиями, но и обеспечить работу над проектом в соответствии с бизнес-целями. В книге более 50 архитекторов рассказывают о том, что считают самым важным в своей работе, дают советы, как организовать общение с другими участниками проекта, как снизить сложность архитектуры, как оказывать поддержку разработчикам. Они щедро делятся множеством полезных идей и приемов, которые вынесли из своего многолетнего опыта. Авторы надеются, что книга станет источником вдохновения и руководством к действию для многих профессиональных программистов.

Билл де Ора , Майкл Хайгард , Нил Форд

Программирование, программы, базы данных / Базы данных / Программирование / Книги по IT