0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<p>Теги: c, си, #define, директива</p>
1
<p>Теги: c, си, #define, директива</p>
2
<p>Директива #define в языке программирования Си определяет идентификатор, а также последовательность символов, которые подставятся вместо идентификатора, причем подставляться они станут каждый раз, когда этот идентификатор будет встречаться в исходном файле. Рассмотрим формальное определение этой директивы:</p>
2
<p>Директива #define в языке программирования Си определяет идентификатор, а также последовательность символов, которые подставятся вместо идентификатора, причем подставляться они станут каждый раз, когда этот идентификатор будет встречаться в исходном файле. Рассмотрим формальное определение этой директивы:</p>
3
<p>Что же, давайте воспользуемся директивой #define:</p>
3
<p>Что же, давайте воспользуемся директивой #define:</p>
4
<p>Итак, у нас определены 3 идентификатора: BEGIN, END, N. Обычно имена идентификаторов находятся в верхнем регистре, однако это не является обязательным правилом, то есть на практике мы можем определять имена и строчными символами.</p>
4
<p>Итак, у нас определены 3 идентификатора: BEGIN, END, N. Обычно имена идентификаторов находятся в верхнем регистре, однако это не является обязательным правилом, то есть на практике мы можем определять имена и строчными символами.</p>
5
<p>Как бы там не было, все вхождения последовательности символов "BEGIN" в нашем случае станут меняться на открывающую фигурную скобку, тогда как "END" - на закрывающую. Что касается символа "N", то он будет меняться на число 23.</p>
5
<p>Как бы там не было, все вхождения последовательности символов "BEGIN" в нашем случае станут меняться на открывающую фигурную скобку, тогда как "END" - на закрывающую. Что касается символа "N", то он будет меняться на число 23.</p>
6
<p>В результате наш код изменится:</p>
6
<p>В результате наш код изменится:</p>
7
<p>Как видите, все просто. Также следует отметить, что для идентификатора совсем необязательно определять символьную последовательность - по сути, вы можете ограничиться лишь одним идентификатором:</p>
7
<p>Как видите, все просто. Также следует отметить, что для идентификатора совсем необязательно определять символьную последовательность - по сути, вы можете ограничиться лишь одним идентификатором:</p>
8
<p>Весьма удобно задействовать эту директиву, например, при определении размера массива:</p>
8
<p>Весьма удобно задействовать эту директиву, например, при определении размера массива:</p>
9
<p>В нашем случае стоит нам захотеть глобально изменить размер массива, нам вполне достаточно будет поменять значение N в директиве define.</p>
9
<p>В нашем случае стоит нам захотеть глобально изменить размер массива, нам вполне достаточно будет поменять значение N в директиве define.</p>
10
<p>Еще важно понимать, что директива не заменяет последовательность символов, когда речь идет о: - двойных кавычках; - одинарных кавычках; - комментариях.</p>
10
<p>Еще важно понимать, что директива не заменяет последовательность символов, когда речь идет о: - двойных кавычках; - одинарных кавычках; - комментариях.</p>
11
<p>При этом если сам идентификатор должен состоять из одного слова, то его последовательность символов вполне себе может состоять как и из нескольких слов, так и из символов, которые разделены пробелами:</p>
11
<p>При этом если сам идентификатор должен состоять из одного слова, то его последовательность символов вполне себе может состоять как и из нескольких слов, так и из символов, которые разделены пробелами:</p>
12
<p><em>По материалам https://metanit.com/cpp/c/.</em></p>
12
<p><em>По материалам https://metanit.com/cpp/c/.</em></p>
13
13