Препроцесор — це текстовий процесор, який обробляє текст вихідного файлу як частину першого етапу перекладу. Препроцесор не аналізує вихідний текст, але він розбиває його на маркери, щоб знайти виклики макросу. Хоча компілятор зазвичай викликає препроцесор під час першого проходу, препроцесор також може бути викликаний окремо для обробки тексту без компіляції.
Директиви препроцесора є інструкціями, записаними в тексті програми на СІ, і виконувані до трансляції програми. Директиви препроцесора дозволяють змінити текст програми, наприклад, замінити деякі лексеми в тексті, вставити текст з іншого файлу, заборонити трансляцію частини тексту і т.п. Всі директиви препроцесора починаються із знаку #. Після директив препроцесора крапка з комою не ставляться.