ertyuo
написал 10 января 2010 года в 19:46 (1585 просмотров)
Ведет себя
неопределенно; открыл 1 тему в форуме, оставил 1 комментарий на сайте.
Узнав из заметки про define и include, возник вопрос по поводу применения директивы препроцессора define в качестве макроса, т.е. замены функции. Но вот широкого применения в практических примерах я так и не увидел, хотя с ней происходит экономия кода и программы становятся гораздо читабельные. Кто знает, в чем заключается проблемы в использовании макроса define?
Последние комментарии
- OlegL, 17 декабря в 15:00 → Перекличка 21
- REDkiy, 8 июня 2023 года в 9:09 → Как «замокать» файл для юниттеста в Python? 2
- fhunter, 29 ноября 2022 года в 2:09 → Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt? 6
- Иванн, 9 апреля 2022 года в 8:31 → Ассоциация РАСПО провела первое учредительное собрание 1
- Kiri11.ADV1, 7 марта 2021 года в 12:01 → Логи catalina.out в TomCat 9 в формате JSON 1
ecobeing.ru
Экология и вегетарианство на благо всем живым существам Планеты.
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 тела такой функции — эффект будет такой же, как от самопального макроса, а все радости приведения типов и прочего — останутся.