Читаем Программирование полностью

  Я ввел в язык С++ комментарии //, унаследованные от его предшественника, языка 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 есть несколько особенностей при работе с функциями.

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

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

• Ссылок нет (а значит, нет и механизма передачи аргументов по ссылке).

• Нет функций-членов.

• Нет подставляемых функций (за исключением версии C99).

• Существует альтернативный синтаксис объявления функций.

Помимо этого, все остальное мало отличается от языка С++. Изучим указанные отличия по отдельности.

<p id="AutBody_Root537"><strong>27.2.1. Отсутствие перегрузки имен функций</strong></p>

Рассмотрим следующий пример:

void print(int);         /* печать целого числа */

void print(const char*); /* печать строки */ /* ошибка! */

Второе объявление является ошибкой, потому что в программе, написанной на языке С, не может быть двух функций с одним и тем же именем. Итак, нам необходимо придумать подходящую пару имен.

void print_int(int);            /* печать целого числа int */

void print_string(const char*); /* печать строки */

Иногда это свойство называют преимуществом: теперь вы не сможете случайно использовать неправильную функцию для вывода целого числа! Очевидно, что нас такой аргумент убедить не сможет, а отсутствие перегруженных функций усложняет реализацию идей обобщенного программирования, поскольку они основаны на семантически похожих функциях, имеющих одинаковые имена. 

<p id="AutBody_Root538"><strong>27.2.2. Проверка типов аргументов функций</strong></p>

Рассмотрим следующий пример:

int main()

{

  f(2);

}

  Компилятор языка С допускает такой код: вы не обязаны объявлять функции до их использования (хотя можете и должны). Определение функции f() может находиться где-то в другом месте. Кроме того, функция f() может находиться в другом модуле компиляции, в противном случае редактор связей сообщит об ошибке.

К сожалению, это определение в другом исходном файле может выглядеть следующим образом:

/* other_file.c: */

int f(char* p)

{

  int r = 0;

  while (*p++) r++;

  return r;

}

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

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

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

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных