
Си — компилируемый статически типизированный язык программирования общего назначения, разработанный в 1969—1973 годах сотрудником Bell Labs Деннисом Ритчи как развитие языка Би. Первоначально был разработан для реализации операционной системы UNIX, но впоследствии был перенесён на множество других платформ. Согласно дизайну языка, его конструкции близко сопоставляются типичным машинным инструкциям, благодаря чему он нашёл применение в проектах, для которых был свойственен язык ассемблера, в том числе как в операционных системах, так и в различном прикладном программном обеспечении для множества устройств — от суперкомпьютеров до встраиваемых систем. Язык программирования Си оказал существенное влияние на развитие индустрии программного обеспечения, а его синтаксис стал основой для таких языков программирования, как C++, C#, Java и Objective-C.
Препроцессор — это компьютерная программа, принимающая данные на входе и выдающая данные, предназначенные для входа другой программы. О данных на выходе препроцессора говорят, что они находятся в препроцессированной форме, пригодной для обработки последующими программами (компилятор). Результат и вид обработки зависят от вида препроцессора; так, некоторые препроцессоры могут только выполнить простую текстовую подстановку, другие способны по возможностям сравниться с языками программирования. Наиболее частый случай использования препроцессора — обработка исходного кода перед передачей его на следующий шаг компиляции. Языки программирования C/C++ и система компьютерной вёрстки TeX используют препроцессоры, значительно расширяющие их возможности.
NULL в языках программирования Си и C++ — макрос, объявленный в заголовочном файле stddef.h. Значением этого макроса является зависящая от реализации константа нулевого указателя.
В программировании заголовочный файл или подключаемый файл — файл, содержимое которого автоматически добавляется препроцессором в исходный текст в том месте, где располагается некоторая директива.
errno.h — заголовочный файл стандартной библиотеки языка программирования С, содержащий объявление макроса для идентификации ошибок через их код. POSIX-совместимые операционные системы, наподобие Unix и Linux, могут включать другие макросы для определения ошибок через собственные коды errno
. Значение errno
имеет смысл только тогда, когда системный вызов или функция возвращает признак ошибки.
В языках программирования Си и C++ #pragma once — нестандартная, но широко распространённая препроцессорная директива, разработанная для контроля за тем, чтобы конкретный исходный файл при компиляции подключался строго один раз. То есть, #pragma once
применяется для тех же целей, что и include guard, но требует меньше кода и не допускает возможности коллизии имён. В наборе компиляторов GCC до версии 3.4 считалась устаревшей и для применения не рекомендовалась. Однако из-за широкого применения это решение было изменено.
В программировании термин «директива» (указание) по использованию похож на термин «команда», также используется для описания некоторых конструкций языка программирования.
locale.h — заголовочный файл стандартной библиотеки языка программирования С, который используется для задач, связанных с локализацией.
assert.h — заголовочный файл стандартной библиотеки языка программирования С, в котором объявляется макрос препроцессора языка С assert
. Данный макрос реализует исключение, которое может использоваться для проверки сделанных программой вычислений.
iso646.h — заголовочный файл, являющийся частью стандартной библиотеки языка Си. Был добавлен в библиотеку в 1995 году поправкой к стандарту C90. Файл определяет макросы, которые позволяют программистам использовать побитовые и логические операторы языка Си, которые без применения заголовочного файла не могут быть быстро или легко напечатаны на некоторых интернациональных и не-QWERTY клавиатурах.
Препроцессор C/C++ — программа, подготавливающая код программы на языке C/C++ к компиляции.
C99 — стандарт языка программирования Си. Определен в ISO/IEC 9899:1999, современная версия - ISO/IEC 9899:1999/Cor 3:2007 от 2007-11-15. Является развитием стандарта C90.
stdio.h заголовочный файл стандартной библиотеки языка Си, содержащий определения макросов, константы и объявления функций и типов, используемых для различных операций стандартного ввода и вывода. Функциональность унаследована от «портативного пакета ввода-вывода», написанного Майком Леском из Bell Labs в начале 1970-х. C++ ради совместимости также использует stdio.h
наряду со схожим по функциональности заголовочным файлом cstdio.
inttypes.h является заголовочным файлом стандартной библиотеки Си и соответствующего API. Он был добавлен в версии 1999 года ISO-стандарта языка Си. Он включает в себя заголовочный файл stdint.h. В нём определён ряд макросов для использования с семействами функций printf
и scanf
и функции для работы с типом intmax_t
.
stdlib.h — заголовочный файл стандартной библиотеки языка Си, который содержит в себе функции, занимающиеся выделением памяти, контролем процесса выполнения программы, преобразованием типов и другие. Заголовок вполне совместим с C++ и известен в нём как cstdlib
. Название «stdlib» расшифровывается как «standard library».
stddef.h — заголовочный файл стандартной библиотеки языка программирования С, определяющий макросы NULL и offsetof, а также типы ptrdiff_t, wchar_t и size_t.
fenv.h — заголовочный файл стандартной библиотеки языка Си, содержащий объявление типов данных для работы с числами с плавающей запятой.
Предварительно откомпилированные заголовки — в средах программирования на языках Си и Си++ — способ ускорить компиляцию программ за счёт предварительной обработки так называемых заголовочных файлов, которые содержат интерфейсы модулей и, согласно нормам данных языков программирования, подключаются к программе путём прямой вставки их текстов в тело основной программы с помощью специальной директивы препроцессора #include
. Предкомпилированные заголовки сохраняются на диске в виде файлов во внутреннем формате компилятора и при повторных компиляциях проекта время на их обработку и подключение существенно сокращается.
C++/CX — расширения языка C++, реализованные в компиляторах от Microsoft. Позволяют писать программы на языке C++ для новой платформы Windows Runtime (WinRT). Они привносят синтаксические и библиотечные абстракции, которые работают с программной моделью COM WinRT в естественном для программистов на C++ стиле.
Несовместимость Си и C++ — особенности языков программирования C++ и Си, затрудняющие перенос кода на языке Си на C++.