Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.01.2010, 18:02   #1
ertyuo
Новичок
Джуниор
 
Регистрация: 05.01.2010
Сообщений: 2
Вопрос Почему функция, а не макрос define?

Увидел в Интернете заметку о директиве препроцессора define, где говорилось, что можно использовать define в качестве функции, т.е.:
#define Figyra (a) (a+a)
Стоит ли ее использовать вместо функций? Или существует какой-то огромный минус при использовании define? Просто с ней бы было нагляднее, да и места код меньше бы занимал.
ertyuo вне форума Ответить с цитированием
Старый 07.01.2010, 18:27   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

это остается макросом.
просто заменит так
Figyra(1)=1+1
HIWORD явный пример когда нужен макрос а не функция...банальная логическая операция быстрее чем вызов функции.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 07.01.2010, 18:28   #3
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Ответ: Нет.
Вопрос: Для каких целей ?
BOBAH13 вне форума Ответить с цитированием
Старый 07.01.2010, 18:33   #4
ertyuo
Новичок
Джуниор
 
Регистрация: 05.01.2010
Сообщений: 2
По умолчанию

Цитата:
Сообщение от BOBAH13 Посмотреть сообщение
Ответ: Нет.
Вопрос: Для каких целей ?
Дело в том, что в недавней программе пришлось писать сразу 30 функций, который грубо сказать делают 1-2 действия. С макросом define кода бы было в разы меньше.
ertyuo вне форума Ответить с цитированием
Старый 07.01.2010, 18:36   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
HIWORD явный пример когда нужен макрос а не функция...банальная логическая операция быстрее чем вызов функции.
посмотрите на это.
если ситуация подобная, то вперед.
иначе бессмысленно(лишь код больше станет)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 07.01.2010, 20:08   #6
RoS
Форумчанин
 
Аватар для RoS
 
Регистрация: 13.12.2009
Сообщений: 272
По умолчанию

Цитата:
Сообщение от ertyuo Посмотреть сообщение
Дело в том, что в недавней программе пришлось писать сразу 30 функций, который грубо сказать делают 1-2 действия. С макросом define кода бы было в разы меньше.
Я так понимаю, если дефайн разрешил эту проблему, то функции просто работали с разными типами данных, так что можешь использовать шаблоны функций!
Если я помог вам - порадуйте меня, нажмите на весы слева
RoS вне форума Ответить с цитированием
Старый 08.01.2010, 02:27   #7
kogemrka
Форумчанин
 
Аватар для kogemrka
 
Регистрация: 08.01.2010
Сообщений: 165
По умолчанию

При работе с макросами возникают следующие проблемы:
  • Возникают сложности при отладке (одно дело, когда ошибка возникает в одной строчке внутри функции, другое дело - когда она равномерно размазана по всему коду
  • Отсутствие автоматической подсказки IDE (в случае функции редактор может вывести всплывающую подсказку с названиями и типами параметров, в случае макроса подсказки не будет)
  • Не будет проверки типов параметров при компиляции
  • Многострочные макросы уродливы (правда-правда)

Конечно, есть ситуации, в которых использовать макросы просто необходимо, но это совсем другая история.
kogemrka вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему функция не возвращает никакое значение? Тупой Общие вопросы Delphi 1 31.05.2009 17:31
Почему не работает функция? rocky7 Общие вопросы C/C++ 2 17.02.2009 08:37
Почему не работает простейший макрос? zander Microsoft Office Excel 5 05.02.2009 20:58
Почему макрос не определяет ячейку? valerij Microsoft Office Excel 3 18.09.2008 00:17