Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Чем функции лучше макросов?

Автор: ertyuo
Дата сообщения: 08.01.2010 18:44
Наткнулся на новость про директиву препроцессора define, где узнал, что можно использовать define так же и в качестве функции:
#define inc (u) (u+2)
Так почему у всех программ я не видел такого использования данной директивы? Хотя, по идее, и писанины меньше, да и нагляднее выходит.
Автор: mugil_cephalus
Дата сообщения: 09.01.2010 16:39
http://forum.ru-board.com/topic.cgi?forum=33&topic=4338#1
http://forum.ru-board.com/topic.cgi?forum=33&topic=3174#1
Автор: KADABRA
Дата сообщения: 10.01.2010 02:22
ertyuo

Цитата:
Так почему у всех программ я не видел такого использования данной директивы?

Купите книгу по C, прочитайте, тогда задавайте интересующие вопросы на эту тему.
Автор: ertyuo
Дата сообщения: 10.01.2010 18:17
Да все читал, правда в основном книги прошлого столетия. Понятное дело, что есть сложные функции. Но в данный момент интересует вопрос именно можно ли макросом define заменить пустячковые функции, буквально в один оператор...
Автор: Smitis
Дата сообщения: 10.01.2010 21:54
ertyuo
По той ссылке, что ты привёл, были упомянуты некие "подводные камни". Так вот, несильно разбираясь в пограммировании, ты уверен, что не наткнёшься на другие камни и не будешь потом метаться по форумам выспрашивая, почему не работает?
И вообще, макросы - это не функции, это подстановка. Нормальные функции не заменит, а читаемость программы может сильно ухудшить.
Автор: Svitter
Дата сообщения: 10.01.2010 23:16
В современных ЯП, например, C# или java, макросов, слава Богу, нет.
Это пережиток прошлого. Макросы были манной небесной, когда появились впервея в языке Ассемблер. Вопросы эффективности стековой передачи параметров, сохранения контекста и т.д. вполне решает дериктива inline.
Автор: asi81
Дата сообщения: 11.01.2010 11:28
Макросы могут заменять простые ф-ии, но во первых если в макросе синтаксическая ошибка, то среда как правило указывает на строку, вызова макроса, а не на ошибку в макросе. Во вторых, как уже сказано, макрос это просто подстановка текста, поэтому есть свои нюансы - нельзя забывать брать макрос в скобки.

Страницы: 1

Предыдущая тема: Excel VBA Двухсторонняя печать(Duplex Print)


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.