Как известно, языки программирования непрерывно развиваются, реагируя на изменения в методологии, приложениях, общепринятой практике и используемом оборудовании. Не является исключением в этом отношении и язык C. Его эволюция пошла двумя путями. Первый — это продолжение разработки самого языка C. Второй путь — это язык C++, для которого C послужил отправной точкой. И хотя последние несколько лет внимание специалистов приковано к C++, но никогда не ослабевал их интерес к развитию языка С. Например, в ответ на интернационализацию вычислительной среды, в 1995 году в первоначальный Стандарт C89 были введены различные двух- и многобайтовые функции. После завершения согласования поправок в 1995 году началось общее обновление языка. Конечным результатом этого обновления, конечно же, является С99.
При создании стандарта 1999 года были тщательно перепроверены все элементы языка С, проанализированы типичные способы его использования и сделаны попытки предугадать будущие потребности. Как и ожидалось, фоном для всего творческого процесса послужили «взаимоотношения» С и C++. Получившийся в результате Стандарт С99 является доказательством мощи своего первоисточника. Было изменено очень малое число ключевых элементов С. Говоря кратко, изменения заключаются в том, что было тщательно отобрано небольшое количество дополнений к языку, а также было добавлено несколько новых библиотечных функций. Так что язык С все еще остается языком С!
В части I этой книги рассказывалось о тех возможностях С, которые были определены в Стандарте С89. В этой части мы обсудим возможности, которые появились в С99, а также немногочисленные отличия между С99 и С89.