Показать сообщение отдельно
Старый 21.08.2008, 16:43   #19  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5803 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Цитата:
Сообщение от kashperuk Посмотреть сообщение
Не, такое не будет работать. Это должен быть именно #define.Something Макросы в АОТ не покатят.
Мда, действительно. Опять тут возникает некоторая путаница из-за "упрощенного" синтаксиса В общем, когда создается подузел в AOT\Macros, то включить текст этого узла в код можно с помощью директивы #macrolib.имя_макроса_в_AOT, хотя допускается "сокращенный" вариант - просто #имя_макроса_в_AOT. В то же время, для препроцессора (как выясняется ) макрос как тот или иной узел в AOT\Macros и макрос, определенный с помощью директив #define/#globaldefine, суть вещи разные. По крайней мере, в Ms Dynamics SDK в разделе «How to: Use the #macrolib Directive for AOT Macro Libraries» пишут
Цитата:
The #if and #undef directives do not apply to #macrolib names. However, they do apply to #define directives that are the contents of a #macrolib macro.
И еще там же есть раздел «Range of Macro Referencing», где подробно объясняется, как препроцессор определяет область видимости макроса (опять же, с точки зрения директивы #if макросом является то, что объявлено с помощью директив #define/#globaldefine) - никаких "единых для всего приложения" мест там не упоминается...

PS. Отсюда - мораль: надо чаще читать документацию