ertyuo
написал 10 января 2010 года в 19:46 (1339 просмотров)
Ведет себя
неопределенно; открыл 1 тему в форуме, оставил 1 комментарий на сайте.
Узнав из заметки про define и include, возник вопрос по поводу применения директивы препроцессора define в качестве макроса, т.е. замены функции. Но вот широкого применения в практических примерах я так и не увидел, хотя с ней происходит экономия кода и программы становятся гораздо читабельные. Кто знает, в чем заключается проблемы в использовании макроса define?
Последние комментарии
-
Дмитрий Шурупов, 12 июня в 13:55 → Перекличка 13
-
Иванн, 9 апреля в 8:31 → Ассоциация РАСПО провела первое учредительное собрание 1
-
Oksana_Gusak, 13 октября в 7:31 → Как «замокать» файл для юниттеста в Python? 2
-
Kiri11.ADV1, 7 марта 2021 года в 12:01 → Логи catalina.out в TomCat 9 в формате JSON 1
-
fhunter, 26 февраля 2021 года в 20:45 → A, MX, PTR — Настройка и проверка извне. Как ? 2

Экология и вегетарианство на благо всем живым существам Планеты.
1. Что такое «экономия кода"?
2. Такими вещами, как «экономия» чего бы то ни было, должен заниматься компилятор.
3. Как именно ты предлагаешь их применять? Т.е. они применяются ровно настолько, насколько польза от этого превышает неудобства. Приведи пример.
1. Вот экономия на мой взгляд:
Ну вот, например, функция:
int Sum (int a, int b)
{
return a+b;
}
макрос define:
#define Sum(a,b) (a+b)
Т.е. вот данный пример занимает меньше места, что способствует более удобному пониманию кода. В принципе, вот к такой замене функций и вел. Т.е. те, которые делают 1-2 действия, легко заменяемые макросом.
/me потёр руки
1. Вместо sum(a, b) люди пишут a + b. Приведи реальный пример.
2. Не вижу тут экономии — вместо вызова одного и того же участка кода, это будет вставлено повсеместно.
3. А вот если я захочу сделать так:
сам угадай, что будет.
С — все-таки не ассемблер, в котором функции и вовсе не предусмотрены :-) почитайте несколько монографий по языку (начиная с K&R).
думать за компилятор не надо. если вас беспокоят короткие функции, то знайте, что компилятор может сделать inline тела такой функции — эффект будет такой же, как от самопального макроса, а все радости приведения типов и прочего — останутся.