Ответить |
17.03.2011, 23:15 #1 | |
Гость
![]() Регистрация: 22.10.2010
Сообщений: 10
Карма: 0
|
Что такое define и для чего он нужен
Здравствуйте.
Вот я иногда встречаю программы с ключевиком define, но не совсем пойму его назначения. На этом сайте в программах я его ни разу не встречал. Объясните пожалуйста подробнее для чего нужен этот define. Если можно, то на примере. Спасибо |
Реклама |
|
18.03.2011, 21:10 #2 | |
Ветеран
![]() Регистрация: 21.08.2010
Сообщений: 321
Карма: 19
|
Re: Что такое define и для чего он нужен
lex писал(а):
Спасибо за вопрос. Сейчас попытаюсь подробнее на него ответить. Сначала пишу пример использования, а затем уже будут разъяснения
Ниже привожу второй вариант этой же программы, но без использования #define
Итак, в языке программирования Си с помощью макроопределения #define объявляют константу, т.е. значение, которое будет постоянным на все время выполнения программы. Как видите, в первой программе мы именно так и сделали: объявили константу, указывающую количество элементов в булевом массиве. Как вы знаете, размер массива должен быть обязательно константным, т.е. можно его указать с помощью объявленной ранее константы, либо вписать конкретную числовую константу в объявление. Первый способ, конечно же, лучше, т.к. более универсален (если вдруг надумаете менять размер массива, то не нужно будет менять числовые значения по всей программе). Немного отвлекся...продолжим.. Т.к. язык С++ еще называют расширенным Си (или Си с классами), то он сам по себе поддерживает все, что можно было делать в старом добром Си, поэтому, в принципе, в нем можно тоже для описания констант использовать это самое макроопределение #define, но оно считается устаревшим и поэтому практически не используется. В языке С++ для определения констант используют ключевое слово const, как показано во второй программе. Оно сообщает компилятору, что это константа. В принципе, можете пользоваться любым определением для описания констант в ваших программах, но я бы, все же, рекомендовал использование const, хоть и говорят, что скорость доступа к константе, описанной с помощью #define несколько быстрее...на современных компьютерах это не играет роли. |
18.03.2011, 21:16 #3 | |
Ветеран
![]() Регистрация: 21.08.2010
Сообщений: 321
Карма: 19
|
Re: Что такое define и для чего он нужен
ua_fan писал(а):
Где-то я в своих материалах сайта, если не ошибаюсь, то уже описывал эту разницу, но все же повторюсь... Разница лишь в том, что когда вы подключаете стандартные заголовочные файлы, т.е. правильно будет писать
когда эти самые заголовочные файлы вы создаете сами (об этом я еще рассказу позже, когда буду писать главу про классы), то правильно будет писать так
при этом этот заголовочный файл (хэдер) должен находиться в корне проекта. Вот, в принципе, и все :) |
22.07.2013, 04:30 #4 | |
Без ранга
![]() Регистрация: 22.07.2013
Сообщений: 1
Карма: 0
|
Re: Что такое define и для чего он нужен
Здравствуйте!
Подскажите пожалуйста. У меня небольшая проблема с переменной define. Не знаю знакомы вы с CMS Drupal, но пользуюсь этой системой. И вот собственно ошибка получается такая: Notice: Undefined offset: 0 in comment_submit() (line 2197 of /modules/comment/comment.module). Код идет такой (2197) /** (2199) * Comment is published. (2199) */ (2200) define('COMMENT_PUBLISHED', 1); Не подскажите что можно поправить? За ранее спасибо! |
Ответить |