Титла: макроопределения с аргументи Публикувано от: Apache в Sep 17, 2005, 22:36 Здравейте. Уча в момента C и стигнах до Предпроцесор>Макроопределения(макроси)> Макроопределения с аргументи.
Не мога да разбера какъв е смисъла от тези аргументи. Как се използват, защо изобщо се използват. Сигурно въпроса ми е супер елементарен, но все пак някой ако има желание може да ми обясни ![]() Титла: макроопределения с аргументи Публикувано от: в Sep 19, 2005, 09:02 Разглеждаш макросите като функции и си задаваш въпроса: "Защо ли аджеба са ми нужни аргументи към функциите? И не е ли
![]() Титла: макроопределения с аргументи Публикувано от: в Sep 19, 2005, 09:16 Не е най-брилятната функция, компилира се с warning
![]() Поправка към горното:
Титла: макроопределения с аргументи Публикувано от: soulcollector в Sep 19, 2005, 18:11 Ами аз го виждам така:
Имаме например:
След предпроцесора трите реда ще изглеждат така:
все едно викаш нормална функция P.S Да благодарим на Brian W. Kernighan и Dennis M. Ritchie за примера и затова, че са го обяснили, така че аз да го разбера. Титла: макроопределения с аргументи Публикувано от: semionov в Sep 21, 2005, 17:25 сигурно вече знаеш че макросите се заместват дословно от препроцесора. а когато имат аргументи, "стойността" на аргумента първо се замества дословно в тялото на макроса, и след това целия получен макрос се замества дословно в програмата и се компилира като сорс. тази възможност придава доста повече гъвкавост и функционалност на макросите, затова е направена.
ето най-яката част - малко по-горе написах стойност в кавички, защото аргумента може да бъде не само константа или променлива, а каквото си поискаш. може да предадеш като аргумент име на тип ако искаш. |