Другие языки программирования и технологии

[C/C++] Так что же плохого в #define ?

Ну, ладно, с goto мы более-менее разобрались. А что же плохого с #define? Адепты нового течения говорят, что в будущем смогут обойтись СОВСЕМ без дефайн (и шоба при этом осталась совместимость со всем старьём). Серьёзно? Откройте секрет.
Nurlan ...............
Nurlan ...............
26 548
Нету ничего. Меньше слушайте советы диванных программистов.
Позволяет порой ускорить операции по вычислению. Оптимизации компилятора это все условно.
Vladimir Fink
Vladimir Fink
387
Лучший ответ
#define, как и любая другая директива препроцессора требует умения с ней обращаться
например
#define _2and2 2+2
main()
{
std::cout<<_2and2*2; // что должна делать и что делает?
}
а учитывая, что приколы могут быть и похитрее, нормальное желание его убрать (так-же как и goto)
Олег Каменский
Олег Каменский
89 394
Очень понравился ответ выше про "диванных программистов")))
Вот что пишет один из таких "диванных программистов", а именно Б. Страуструп, создатель языка C++:

"Макросы очень полезны в языке С, но в языке C++ они используются гораздо
реже. Самое первое правило для макросов: не используйте их без крайней
необходимости. Почти что каждый макрос свидетельствует о наличии слабых мест в
языке, программе или программисте. Так как из-за макросов текст программы
изменяется до того, как его увидит компилятор, то создаются лишние проблемы для
многих инструментов программирвания. Если вы применяете макросы, приготовьтесь
получать меньшую пользу от отладчиков, генераторов перекрестных ссылок и
профилировщиков. Если все же вам нужно применять макросы, внимательно
прочитайте руководство по вашей реализации препроцессора C++ и не прибегайте к уж
слишком хитрым конструкциям. Также следуйте общепринятому соглашению об
именовании макросов с помощью исключительно заглавных букв. Синтаксис
макросов описан в §А. 11."
.... ....
.... ....
46 815
Плохого ровно столько, как и во всех остальных конструкциях - если использовать бездумно и не к месту, то ничего хорошего не жди.
обалденный у Вас аватарчик :)
А дефайны - да и БГ бы с ними, нет - так нет.
Подозреваю, что 99% дефайнов можно заменить обычным виндовым апи.
Николай Черняков очень интересно посмотреть, как в ядре linux дефайны виндовым апи заменить можно ;)
Gena Novik Аватарчик из South Park. Серия про World of the Warcraft =)
Забавная серия кст.
Все в них хорошо. Просто надо уметь их использовать и использовать к месту.