netlib.narod.ru | < Назад | Оглавление | Далее > |
Функции разбивают большие вычислительные задачи на более мелкие и позволяют воспользоваться тем, что уже сделано другими разработчиками, а не начинать создание программы каждый раз с нуля. Правильным образом написанные функции скрывают детали реализации от других частей программы, которым не требуется знать о них, что делает программу в целом более ясной и облегчает внесение в нее изменений.
Язык Си проектировался так, чтобы функции были эффективными и простыми в использовании. Обычно программы на Си состоят из большого числа небольших функций, а не из нескольких больших. Программу можно располагать в одном или нескольких исходных файлах. Эти файлы можно компилировать отдельно, а загружать вместе, в том числе и с ранее откомпилированными библиотечными функциями. Процесс загрузки здесь не рассматривается, поскольку он различен в разных системах.
Объявление и определение функции — это та область, где стандартом ANSI в язык внесены самые существенные изменения. Как мы видели в главе 1, в объявлении функции теперь разрешено задавать типы аргументов. Синтаксис объявления функции также изменен, так что теперь объявления и определения функций соответствуют друг другу. Это позволяет компилятору обнаруживать намного больше ошибок, чем раньше. Кроме того, если типы аргументов соответствующим образом объявлены, то необходимые преобразования аргументов выполняются автоматически.
Стандарт вносит ясность в правила, определяющие области видимости имен; в частности, он требует, чтобы для каждого внешнего объекта было только одно определение. В нем также обобщены средства инициализации: теперь можно инициализировать автоматические массивы и структуры.
Улучшен и препроцессор Си. Он включает более широкий набор директив условной компиляции, предоставляет возможность генерировать строки в кавычках из аргументов макроопределения, и, кроме того, содержит более совершенный механизм управления процессом подстановки макроопределений.
netlib.narod.ru | < Назад | Оглавление | Далее > |