Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 176, средняя оценка - 4.74
^Tecktonik_KiLLeR
1159 / 441 / 22
Регистрация: 23.06.2009
Сообщений: 6,230
Завершенные тесты: 1
#1

Для чего нужен define? - C++

05.07.2009, 13:29. Просмотров 22910. Ответов 34
Метки нет (Все метки)

Для чего нужен оператор define?
например код


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#define N 20            /* сколько первых чисел посчитать */
 
void main(){
    int fibs[N], index;
 
    fibs[0] = 1;    /* индексы отсчитываются с нуля!!! */
    fibs[1] = 1;
 
    /* Тут показано, что индекс элемента массива может вычисляться */
 
    for(index=2; index < N; index++)
        fibs[index] = fibs[index-1] + fibs[index-2];
 
    /* Распечатка в обратном порядке */
    for(index = N-1; index >= 0; index--)
        printf("%d-ое число Фибоначчи есть %d\n",
            index+1,                   fibs[index]);
}
 
Здесь мы видим новый для нас оператор #define
Он задает текстуальную ЗАМЕНУ слова N на слово 20,
в данном случае просто являясь эквивалентом
 
    const int N = 20;



неьзя ли edfine удалить и вместо N написать 20????
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.07.2009, 13:29     Для чего нужен define?
Посмотрите здесь:

Для чего нужен с++? - C++
Я школьник, мне 16 лет, учусь в 10 классе, планирую поступить на факультет защиты информационных технологий. Сейчас начал изучать с++, не...

Для чего нужен Sizeof - C++
Вот строка memcpy(pMatrPr, pMatr, sizeof(double) * n * m); Это копирование исходной матрицы в преобразованную А что такое...

Для чего нужен break? - C++
для чего нужен break?

Для чего нужен EOF? - C++
задание такое:написать программу, печатающую все вводимые символы в верхнем регистре, в строку выодится 16ричный и 8ричный код. #include...

Для чего нужен символ \b? - C++
для чего нужен символ \b??

Виртуальный деструктор, для чего нужен? - C++
Я конечно понимаю, что Но объясните поподробнее и попонятнее для чего это нужно

Для чего нужен шаблон <typename T> - C++
Здравствуйте. template &lt;typename T&gt; T CLAMP(const T&amp; value, const T&amp; low, const T&amp; high) { return (value &lt; low) ? low : ((value...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vourhey
Почетный модератор
6477 / 2252 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
06.07.2009, 14:04     Для чего нужен define? #21
Для функций безопасней будет использовать не #define, а делать обычные функции. Можно inline. Так как, это убережет нас при проверке типов входящих переменных. Например макрос позволит сделать так:
C
1
2
#define MIN(a, b) a<b?a:b
   printf("%d\n", MIN("five",3));
Хотя, и выдаст предупреждение. Тем самым, определив свою функцию принимающую, например, только int, мы обезопасим себя от некоторых проблем (не только указанной выше) связанных с макроопределениями. Хотя, конечно, что использовать лучше зависит от контекста.

Добавлено через 1 минуту 28 секунд
@lex, вот если бы ты хотел, ты бы сам все нашел:
http://www.citforum.ru/programming/c.../cpp_054.shtml
лентяи...
^Tecktonik_KiLLeR
1159 / 441 / 22
Регистрация: 23.06.2009
Сообщений: 6,230
Завершенные тесты: 1
06.07.2009, 14:55  [ТС]     Для чего нужен define? #22
Цитата Сообщение от Vourhey Посмотреть сообщение
@lex, вот если бы ты хотел, ты бы сам все нашел:
http://www.citforum.ru/programming/c.../cpp_054.shtm
там не понятно написано

Добавлено через 35 секунд
Vourhey, лучший ответ нашел в своем учебнике
Vourhey
Почетный модератор
6477 / 2252 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
06.07.2009, 15:22     Для чего нужен define? #23
@lex, вот че ты его раньше не нашел? Все ведь можно найти. Нет ведь, я если за 10 секунд не нашел ответа, я лучше спрошу и буду привыкать к тому, что меня тащат за уши..эх..
Здесь везде тоже непонятно написано:
http://www.google.ru/search?hl=ru&ne...A&lr=&aq=f&oq=
?
^Tecktonik_KiLLeR
1159 / 441 / 22
Регистрация: 23.06.2009
Сообщений: 6,230
Завершенные тесты: 1
06.07.2009, 20:01  [ТС]     Для чего нужен define? #24
Цитата Сообщение от Vourhey Посмотреть сообщение
Здесь везде тоже непонятно написано:
http://www.google.ru/search?hl=ru&ne...A&lr=&aq=f&oq=
ага там везде дельфи и С#
pigah
12 / 12 / 2
Регистрация: 05.07.2009
Сообщений: 147
Записей в блоге: 1
10.07.2009, 03:04     Для чего нужен define? #25
define - это именованная константа то есть тип определяется автоматически (не рекомендуется использовать);
const - это типизированная константа тип задается программистом (рекомендуется);
odip
Эксперт С++
7155 / 3295 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
10.07.2009, 08:46     Для чего нужен define? #26
define - это именованная константа то есть тип определяется автоматически (не рекомендуется использовать);
Ну-ну.
Слово препроцессор тебе о чем нибудь говорит ?
odip
Эксперт С++
7155 / 3295 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
17.07.2009, 17:17     Для чего нужен define? #27
Я бы предложил усовершенствовать файл t.h до правильного

C
1
2
3
4
5
6
7
/* Файл t.h */
#ifndef _T_H
#define _T_H
 
extern int func (int);
 
#endif
Evg
Эксперт CАвтор FAQ
17527 / 5765 / 368
Регистрация: 30.03.2009
Сообщений: 15,853
Записей в блоге: 26
17.07.2009, 18:57     Для чего нужен define? #28
Цитата Сообщение от odip Посмотреть сообщение
Я бы предложил усовершенствовать файл t.h до правильного
До правильного совершенствовать его следует с объяснением, зачем это так, а так же с примером, когда возникает повторый инклюд
odip
Эксперт С++
7155 / 3295 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
17.07.2009, 19:02     Для чего нужен define? #29
Я бы предложил усовершенствовать файл t.h до правильного

Код
/* Файл t.h */
#ifndef _T_H
#define _T_H
 
extern int func (int);
 
#endif
Обрамление h-файлов в такую синтаксическую конструкцию позволяет срабатывать коду внутри только один раз.
При большом кол-ве файлов или в случае вложенных h-файлов вы легко можете ошибиться и случайно или специально два раза включить h-файл.
Evg
Эксперт CАвтор FAQ
17527 / 5765 / 368
Регистрация: 30.03.2009
Сообщений: 15,853
Записей в блоге: 26
17.07.2009, 20:01     Для чего нужен define? #30
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Тут в соседней теме возник вопрос, зачем нужно *.h файлы использовать, а потому вкратце добавлю то, как работает директива #include

#include ничего умного не делает, она целиком подставляет файл, который передан параметром директиве. Т.е. если мы имеем исходники

C
1
2
3
4
5
6
/* Файл t1.c */
#include "t.h"
int main (void)
{
  return func (1);
}
C
1
2
3
4
5
6
7
/* Файл t2.c */
#include "t.h"
int
func (int x)
{
  return x;
}
C
1
2
/* Файл t.h */
extern int func (int);
То после препроцессирования файла t1.c получим код:

C
1
2
3
4
5
6
 <--- комментарии удаляются на этапе препроцессирования
extern int func (int); <--- сюда подставилось содержимое файла t.h
int main (void)
{
  return func (1);
}
а после препроцессирования t2.c вот такой:

C
1
2
3
4
5
6
extern int func (int);
int
func (int x)
{
  return x;
}
Таким образом, описав что-то в *.h файле, это что-то попадает на трансляцию всех модулей, обеспечиывая "одинаковость". То, что файл имеет расширение *.h - это условность. Инклюдить можно всё, что угодно
Evg
Эксперт CАвтор FAQ
17527 / 5765 / 368
Регистрация: 30.03.2009
Сообщений: 15,853
Записей в блоге: 26
10.04.2010, 17:01     Для чего нужен define? #31
Для истории: статья теперь лежит тут
Zanoza
9 / 9 / 1
Регистрация: 16.03.2010
Сообщений: 44
10.04.2010, 20:27     Для чего нужен define? #32
Цитата Сообщение от Evg Посмотреть сообщение
Для истории: статья теперь лежит тут

Не по теме:

попробуй написать учебник ,с такой стилистикой - у тебя будет огромный успех! это говорит тебе преподаватель(правда не айтишник)

Evg
10.04.2010, 22:29
  #33

Не по теме:

Статья по узкоспециализированной теме и учебник по широкой теме - две слишком разные вещи. Написал я эту статью в первую очередь потому, что ещё нигде не видел вменяемого описания работы препроцессора. К тому же статью я до сих пор не закончил. Когда "не идёт" - уж лучше я ничего не напишу, чем напишу плохо. Но как-нибудь соберусь с мыслями и закончу. А учебник при таком подходе будет готов не раньше следующего столетия

Zanoza
9 / 9 / 1
Регистрация: 16.03.2010
Сообщений: 44
10.04.2010, 22:33     Для чего нужен define? #34
Цитата Сообщение от Evg Посмотреть сообщение

Не по теме:

Статья по узкоспециализированной теме и учебник по широкой теме - две слишком разные вещи. Написал я эту статью в первую очередь потому, что ещё нигде не видел вменяемого описания работы препроцессора. К тому же статью я до сих пор не закончил. Когда "не идёт" - уж лучше я ничего не напишу, чем напишу плохо. Но как-нибудь соберусь с мыслями и закончу. А учебник при таком подходе будет готов не раньше следующего столетия

Не по теме:

живи сто лет,друг!
да и я - подожду

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.04.2010, 22:34     Для чего нужен define?
Еще ссылки по теме:

Прототип функции.Для чего нужен - C++
для чего нужен прототип в этом примере int func(int a, int b); int main(){...} int func(a,b){ ... return a+b; } если...

Объясните для чего нужен конструктор - C++
Можете доступно объяснить для чего нужен конструктор, на примере этого кода. #include &lt;iostream&gt; #include &lt;conio.h&gt; #include...

Для чего нужен указатель vptr? - C++
для чего нужен указатель vptr?? насколько я знаю, он указывает на таблицу виртуальных функций, а как она работает?

Для чего нужен класс auto_ptr_ref? - C++
Здравствуйте, можно поконкретней, для чего нужен класс auto_ptr_ref? Спасибо.

Для чего нужен тип void? - C++
для чего нужна функция void


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
^Tecktonik_KiLLeR
10.04.2010, 22:34  [ТС]     Для чего нужен define?
  #35

Не по теме:

Evg, +1 Zanoza-е...

Yandex
Объявления
10.04.2010, 22:34     Для чего нужен define?
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru