Функції розбивають великі обчислювальні завдання на менші, і дозволяють програмістам будувати на основі того, що написали інші, замість починати все з нуля. Хороші функції ховають деталі своєї роботи від частин програми, які не повинні про це знати, таким чином прояснюючи увесь код, і полегшуючи зміни.
C задумана, щоб зробити функції ефективними та легкими у використанні; програми на C, як правило, складаються з багатьох малих функцій, замість кількох великих. Сама програма може знаходитись в одному або декількох вихідних файлах. Вихідні тексти можна компілювати окремо і завантажити разом, поряд з попередньо-компільованими функціями бібліотеки. Ми не будемо заглиблюватись у цей процес тут, оскільки подробиці можуть відрізнятися в різних операційних системах.
Оголошення й означення функцій — це саме та область, де стандарт ANSI здійснив найбільші зміни в мові C. Як ми вже бачили у Розділі 1, тепер з'явилася можливість опису типу аргументів під час оголошення функцій. Синтаксис визначення функції також змінився, тож оголошення та визначення збігаються. Це дозволяє тепер компілятору вловити набагато більше помилок, ніж раніше. Більше того, коли аргументи оголошено належним чином, відповідні поправки типів здійснюються автоматично.
Стандарт прояснює правила області дії імен, зокрема він вимагає, щоб існувало тільки одне визначення для кожного зовнішнього об'єкту. Ініціалізація стала більш загальною: тепер можна започатковувати автоматичні масиви і структури.
Препроцесор C також вдосконалено. Нові засоби препроцесора тепер включають повніший набір умовних компіляційних директив, спосіб створення залапкованих ланцюжків з аргументів макросу, і покращене керування над процесом розкриття макросів.