Идентификаторы C
"Идентификаторы" или "символы" — это имена, задаваемые в программе для переменных, типов, функций и меток. Написание и регистр символов в именах идентификаторов должны отличаться от всех ключевых слов. Ключевые слова (C или Майкрософт) нельзя использовать как идентификаторы; они зарезервированы для специального использования. Идентификатор создается путем его указания в объявлении переменной, типа или функции. В этом примере result
представляет собой идентификатор целой переменной, а main
и printf
— это имена идентификаторов для функций.
#include <stdio.h>
int main()
{
int result;
if ( result != 0 )
printf_s( "Bad file handle\n" );
}
Объявленный идентификатор можно использовать в последующих операторах программы для ссылки на соответствующее значение.
В инструкциях можно использовать goto
специальный набор идентификаторов, называемый меткой инструкции. (Объявления рассматриваются в разделе Объявления и типы. Метки операторов рассматриваются в разделе Оператор goto и помеченные операторы.)
Синтаксис
identifier
:
nondigit
identifier
nondigit
identifier
digit
nondigit
: один из
_ a b c d e f g h i j k l m n o p q r s t u v w x y z
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
digit
: один из
0 1 2 3 4 5 6 7 8 9
Первый символ имени идентификатора должен принадлежать к группе nondigit
(т. е., первым символом должен быть знак подчеркивания или прописная либо строчная буква). Стандарт ANSI допускает 6 значащих символов в имени внешнего идентификатора и 31 символ для имен внутренних (внутри функции) идентификаторов. Внешние идентификаторы (объявленные в глобальной области или объявленные с классом extern
хранилища) могут быть подвержены дополнительным ограничениям именования, так как эти идентификаторы должны обрабатываться другими программными средствами, такими как компоновщики.
Блок, относящийся только к системам Майкрософт
Хотя стандарт ANSI допускает 6 значащих символов в именах внешних идентификаторов и 31 символ в именах внутренних (внутри функции) идентификаторов, компилятор Microsoft C допускает 247 символов в именах внутренних и внешних идентификаторов. Если вы не обеспокоены совместимостью ANSI, можно изменить это значение по умолчанию, чтобы использовать меньшее или большее число, указав /H
параметр (ограничить длину внешних имен).
Завершение блока, относящегося только к системам Майкрософт
В компиляторе языка C прописные и строчные буквы считаются разными символами. Эта особенность, называемая "учетом регистра", позволяет создавать различные идентификаторы, состоящие из одинаковых букв в различных регистрах. Например, каждый из следующих идентификаторов является уникальным:
add
ADD
Add
aDD
Блок, относящийся только к системам Майкрософт
Не выбирайте имена идентификаторов, начинающихся с двух символов подчеркивания или подчеркивания, за которым следует прописная буква. Стандарт ANSI языка C разрешает резервировать имена идентификаторов, начинающиеся с таких сочетаний символов, для использования компилятором. Идентификаторы с областью действия на уровне файлов также не должны начинаться со знака подчеркивания и последующей строчной буквы. Имена идентификаторов, начинающиеся с таких символов, также зарезервированы. По принятому соглашению в системах Microsoft символ подчеркивания и прописная букву используются в начале имен макросов, а два символа подчеркивания используются для специальных ключевых слова систем Microsoft. Чтобы избежать конфликтов именования, всегда выбирайте имена идентификаторов, которые не начинаются с одного или двух символов подчеркивания, или имена, начинающиеся с подчеркивания, за которым следует прописная буква.
Завершение блока, относящегося только к системам Майкрософт
Ниже приведены примеры допустимых идентификаторов, которые соответствуют ограничениям на имена, накладываемым стандартом ANSI или системами Microsoft:
j
count
temp1
top_of_page
skip12
LastNum
Блок, относящийся только к системам Майкрософт
Хотя идентификаторы в исходных файлах чувствительны к регистру по умолчанию, символы в файлах объектов не являются. Microsoft C обрабатывает идентификаторы в единице компиляции с учетом регистра.
Компоновщик Microsoft учитывает регистр. Необходимо указывать все идентификаторы единообразно с учетом регистра.
"Исходная кодировка" — это набор допустимых символов, которые могут использоваться в файлах исходного кода. Для Microsoft C исходной кодировкой является стандартный набор символов ASCII. Исходная кодировка и кодировка выполнения содержат символы ASCII, используемые в виде escape-последовательностей. Сведения о кодировке выполнения см. в статье Константы символов в C.
Завершение блока, относящегося только к системам Майкрософт
Идентификатор имеет "область", которая является регионом программы, в которой она известна. Он также имеет "компоновку", которая определяет, относится ли то же имя в другой области к тому же идентификатору. Эти термины описаны в разделе "Время существования", "Область", "Видимость" и "Компоновка".