Другие языки программирования и технологии
[C/C++] Так что же плохого в #define ?
Ну, ладно, с goto мы более-менее разобрались. А что же плохого с #define? Адепты нового течения говорят, что в будущем смогут обойтись СОВСЕМ без дефайн (и шоба при этом осталась совместимость со всем старьём). Серьёзно? Откройте секрет.
Нету ничего. Меньше слушайте советы диванных программистов.
Позволяет порой ускорить операции по вычислению. Оптимизации компилятора это все условно.
Позволяет порой ускорить операции по вычислению. Оптимизации компилятора это все условно.
#define, как и любая другая директива препроцессора требует умения с ней обращаться
например
#define _2and2 2+2
main()
{
std::cout<<_2and2*2; // что должна делать и что делает?
}
а учитывая, что приколы могут быть и похитрее, нормальное желание его убрать (так-же как и goto)
например
#define _2and2 2+2
main()
{
std::cout<<_2and2*2; // что должна делать и что делает?
}
а учитывая, что приколы могут быть и похитрее, нормальное желание его убрать (так-же как и goto)
Очень понравился ответ выше про "диванных программистов")))
Вот что пишет один из таких "диванных программистов", а именно Б. Страуструп, создатель языка C++:
"Макросы очень полезны в языке С, но в языке C++ они используются гораздо
реже. Самое первое правило для макросов: не используйте их без крайней
необходимости. Почти что каждый макрос свидетельствует о наличии слабых мест в
языке, программе или программисте. Так как из-за макросов текст программы
изменяется до того, как его увидит компилятор, то создаются лишние проблемы для
многих инструментов программирвания. Если вы применяете макросы, приготовьтесь
получать меньшую пользу от отладчиков, генераторов перекрестных ссылок и
профилировщиков. Если все же вам нужно применять макросы, внимательно
прочитайте руководство по вашей реализации препроцессора C++ и не прибегайте к уж
слишком хитрым конструкциям. Также следуйте общепринятому соглашению об
именовании макросов с помощью исключительно заглавных букв. Синтаксис
макросов описан в §А. 11."
Вот что пишет один из таких "диванных программистов", а именно Б. Страуструп, создатель языка C++:
"Макросы очень полезны в языке С, но в языке C++ они используются гораздо
реже. Самое первое правило для макросов: не используйте их без крайней
необходимости. Почти что каждый макрос свидетельствует о наличии слабых мест в
языке, программе или программисте. Так как из-за макросов текст программы
изменяется до того, как его увидит компилятор, то создаются лишние проблемы для
многих инструментов программирвания. Если вы применяете макросы, приготовьтесь
получать меньшую пользу от отладчиков, генераторов перекрестных ссылок и
профилировщиков. Если все же вам нужно применять макросы, внимательно
прочитайте руководство по вашей реализации препроцессора C++ и не прибегайте к уж
слишком хитрым конструкциям. Также следуйте общепринятому соглашению об
именовании макросов с помощью исключительно заглавных букв. Синтаксис
макросов описан в §А. 11."
Плохого ровно столько, как и во всех остальных конструкциях - если использовать бездумно и не к месту, то ничего хорошего не жди.
обалденный у Вас аватарчик :)
А дефайны - да и БГ бы с ними, нет - так нет.
Подозреваю, что 99% дефайнов можно заменить обычным виндовым апи.
А дефайны - да и БГ бы с ними, нет - так нет.
Подозреваю, что 99% дефайнов можно заменить обычным виндовым апи.
Все в них хорошо. Просто надо уметь их использовать и использовать к месту.
Похожие вопросы
- Чем отличаются между собой C, C# и C++ ?
- А почему программы написанные на C/C#/C++ имеют больший вес чем на tasm/masm?
- Помогите новичку, объясните разницу между C, C++ И C#. и Посоветуйте книгу/видеоуроки или т. п для обучения основ
- здравствуйте, помогите пожалуйста, что не так вот c C++ кодом:
- Я программист java,c++,c#,cи, нужен ли я кому нибудь?
- Задача по программированию на C++ C++ C++ C++, не на Pascal
- Какой компилятор C++ (c IDE) лучше юзать для изучения C++? (чтобы места на диске как можно меньше занимал)
- какой язык легче; c, c++, c#
- В чём отличие между C/C++ и C#?
- язык программирования. какой язык программирования лутьше изучать: C, C++, C#, Java?
Забавная серия кст.