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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.03.2013, 19:29   #1
MooNDeaR
В стагнации
Участник клуба
 
Аватар для MooNDeaR
 
Регистрация: 29.07.2011
Сообщений: 1,303
По умолчанию Использовать или не использовать #define? [C++]

Просто такой небольшой вопросец.

Есть у меня код, в котором много раз повторяется следующая конструкция

Код:
for(int i = 0; i < r_size; ++i)
    for(int j = 0; j < c_size; ++j)
А потом идет какое нибудь действие в одну строчку. Например вот так:

Код:
for(int i = 0; i < r_size; ++i)
    for(int j = 0; j < c_size; ++j)
        mtx[i][j] -= temp;
Мне стало лень писать это каждый раз и сделал так

Код:
#define TWICE_FOR for(int i = 0; i < r_size; ++i) for(int j = 0; j < c_size; ++j)
...
...
TWICE_FOR mtx[i][j] -= temp;
...
TWICE_FOR mtx[i][j] += temp;
Вопрос собственно в чем. Адекватно ли вообще так поступить и сильно ли это снизило бы удобочитаемость кода для стороннего человека?
E-mail: pashaworking@gmail.com | ICQ: 479914426 | Skype: moondearr
Понять, чего от тебя требует заказчик – это уже половина всей работы, а иногда и полностью выполненное задание.
MooNDeaR вне форума Ответить с цитированием
Старый 09.03.2013, 21:37   #2
GreenWizard
мальчик-помогай =)
Форумчанин
 
Регистрация: 16.09.2010
Сообщений: 522
По умолчанию

Кратко: да, лучше так не делать
Развёрнуто отвечать и лень, и простуда мешает)) имхо, лучше уж организовать через итераторы/ф-ии (аля mtx.ForEach(function_ptr) или типа того..... не помню как в С++ такое пишется)..... это и код упростит, и читаемость повысит, и в function_ptr можно много чего скрыть
GreenWizard вне форума Ответить с цитированием
Старый 09.03.2013, 22:15   #3
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,679
По умолчанию

Я тоже придерживаюсь такого мнения, что не стоить перегружать различными конструкциями #define. Конечно можно написать небольшую макро функцию при помощи #define, но не более. Зачем отбирать хлеб у функций....
По большому счету я использую его для описания констант... Пару раз натыкался на очень неприятные подводные камни, нагружая различными конструкциями, и пока больше желания нет... и Вам не рекомендую.
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Старый 10.03.2013, 06:23   #4
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

попробуй пройти по макросу отладчиком, вывод будет очевиден - макросы нереально отлаживать. И уже этого достаточно чтобы их не использовать.

Цитата:
имхо, лучше уж организовать через итераторы/ф-ии
ни итераторы, ни функции ТС ИМХО не помогут
rrrFer вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как подключить и использовать DirectX или OpenGL в Delphi2010 ??? Warn Gamedev - cоздание игр: Unity, OpenGL, DirectX 0 03.11.2011 20:07
какую функцию использовать или макрос? panuta Microsoft Office Excel 20 15.08.2011 18:29
Какой объект использовать: массив или запись? lifeton Общие вопросы Delphi 1 27.05.2010 14:52
Защитные очки использовать или нет? iukash Свободное общение 12 02.05.2010 08:56
HML или ACCESS что лучше использовать? Inbox БД в Delphi 2 15.05.2007 19:13