|
Вызов «xcat(xcat(1, 2), 3)» будет заменён на «123», не хватает мозга понять! |
|
|
|
 |
Ответов
|
Apr 8 2018, 10:33
|

фанат дивана
     
Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684

|
Цитата(ViKo @ Apr 8 2018, 10:19)  Точнее, вопрос, почему в макрофункции cat(cat(1,2),3) не складываются так cat(12,3) 123 Вот объяснение ( отсюда): Цитата 3.10.6 Argument PrescanЦитата Macro arguments are completely macro-expanded before they are substituted into a macro body, unless they are stringified or pasted with other tokens. After substitution, the entire macro body, including the substituted arguments, is scanned again for macros to be expanded. The result is that the arguments are scanned twice to expand macro calls in them. При раскрытии xcat(xcat(1, 2), 3) сначала, как полагается, производится прескан аргументов. Раскрывается первый аргумент: xcat(1, 2) -> cat(1, 2) -> 12. Прескан второго аргумента дает результат 3. Теперь раскрывается сам макрос: xcat(12, 3) -> cat(12, 3) -> 123. Ключевая фраза "unless they are stringified".
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
Сообщений в этой теме
ViKo Вызов «xcat(xcat(1, 2), 3)» будет заменён на «123» Apr 7 2018, 19:41 jcxz Цитата(ViKo @ Apr 7 2018, 22:41) Как прой... Apr 7 2018, 19:47 ViKo Цитата(jcxz @ Apr 7 2018, 22:47) В свойст... Apr 7 2018, 19:52  AHTOXA Eclipse показывает 4 шага:
Кодxcat(cat(1,... Apr 7 2018, 20:01 ViKo То есть, сначала в аргументе макрофункции произошл... Apr 7 2018, 20:18 SSerge Цитата(ViKo @ Apr 8 2018, 12:19) Точнее, ... Apr 8 2018, 10:31 ViKo Ага, так в выражении:
Если в замещающей последоват... Apr 9 2018, 09:40 Baser Если есть желание совсем "надломить моск... Apr 9 2018, 09:54 ViKo Спасибо, почитаем-с! Я, в принципе, пользуюсь ... Apr 9 2018, 10:01 XVR Можно проще - # и ## применяются ДО ТОГО, как прои... Apr 9 2018, 11:02 Arlleex В общем это тема для меня пока что не совсем понят... May 4 2018, 07:50 Baser Цитата(Arlleex @ May 4 2018, 10:50) Это в... May 4 2018, 13:42 Arlleex Кодпотому что каждый раз макросы разворачиваются д... May 4 2018, 16:36 Baser Цитата(Arlleex @ May 4 2018, 19:36) funct... May 4 2018, 18:23 Arlleex Ну да, получается, что так.
Спасибо May 4 2018, 18:25
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|