|
7 / 7 / 2
Регистрация: 19.06.2013
Сообщений: 174
|
|||||||||||
Почему не рекомендуется использовать препроцессор?08.06.2014, 19:08. Показов 2297. Ответов 9
Метки нет (Все метки)
Я сейчас активно пользуюсь #define для упрощения понимания кода.
Например, у меня сложная система классов, что бы получить одну переменную из класса, нужно набрать около 20-30 букв. А если нужно сделать какой-то сложный if(), то вообще условие строчек на 5 разъезжается. И я придумал помогать себе #define вот такие образом:
Читаю Страуструпа, другие книги, которые учат как правильно на Си++ программировать, и там сказано, что #define это зло, не пользуйтесь им, это неправильно и т.д. И я так и не понял почему оно плохо, когда вон как полезно и удобно! Кто-нибудь может объяснить какие проблемы может вызвать массовое использование #define? Лично я не вижу в этом ничего страшного...
0
|
|||||||||||
| 08.06.2014, 19:08 | |
|
Ответы с готовыми решениями:
9
Пояснить, почему в примере не рекомендуется использовать закрытое наследование Нюансы синтаксиса: как рекомендуется использовать ключевое слово auto? Почему включение сторонних библиотек не рекомендуется? |
|
347 / 292 / 37
Регистрация: 23.03.2012
Сообщений: 838
|
|
| 08.06.2014, 19:15 | |
|
0
|
|
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
|
| 08.06.2014, 19:16 | |
|
1) define срет в глобальное пространство имен и никакими силами его от этого не отучишь.
2) Если "условие строчек на 5 разъезжается" и при этом используется больше чем в одном месте, его следует вынести в отдельную функцию. 3) Если текст условия один, а типы аргументов разные, его следует вынести в шаблон. 4) //Не понимаешь код? Комментарии спасут отца русской демократии Короче, в 90% случаев использование define лишь показатель неспособности использовать что-то более современное и удобное.
1
|
|
|
68 / 65 / 21
Регистрация: 01.05.2014
Сообщений: 247
|
|
| 08.06.2014, 19:19 | |
|
Приветствую!
Некоторое отступление: конечно, этого и стоило ожидать, ведь Новое поколение и - обязано быть на ступень Выше. Как кажется мне, то - скорее всего: без необходимости - ничего ни нужно определять. ( + + + ни используйте Русский Язык ( кроме комментариев конечно ) - пожелание. И на закуску: ссылка на UE3 ( образец кода ), где всё, что Вы желаете знать - относительно разнообразных конфигураций, используя преславутые Макросы: http://thepiratebay.se/torrent... l_Engine_3 ( семьдесять мег )
0
|
|
|
7 / 7 / 2
Регистрация: 19.06.2013
Сообщений: 174
|
||
| 08.06.2014, 19:27 [ТС] | ||
|
0
|
||
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
||
| 08.06.2014, 19:37 | ||
|
1
|
||
|
327 / 230 / 55
Регистрация: 30.05.2014
Сообщений: 682
|
||
| 08.06.2014, 20:08 | ||
|
1
|
||
|
7 / 7 / 2
Регистрация: 19.06.2013
Сообщений: 174
|
|
| 08.06.2014, 20:17 [ТС] | |
|
Проблему понял, если не использовать стандартные имена для #define, то проблем быть не должно)
Я думал трудности более серьезные =)
0
|
|
|
Неэпический
|
||
| 08.06.2014, 20:19 | ||
|
Вместо макросов можно сделать inline функцию
0
|
||
|
Модератор
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
|
||||||||
| 08.06.2014, 20:30 | ||||||||
Сообщение было отмечено Divergence как решение
Решение
1
|
||||||||
| 08.06.2014, 20:30 | |
|
Помогаю со студенческими работами здесь
10
Почему не работает препроцессор? Почему не рекомендуется использовать realloc() Сравнить функции. Рекомендуется использовать правило Лопиталя. Почему мне рекомендуется чужое подключение? Почему Каспер лезет туда, куда ему лезть не рекомендуется Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|
SDL3 для Web (WebAssembly): Сборка SDL3, Box2D, FreeType и SDL3_ttf из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|