Macros werden innerhalb von Dynamics AX z.B. für die Best-Practice konforme Verwendungvon festen Zeichenfolgen innerhalb des X++ Quellcodes verwendet.
An vielen Stellen im System finden sich Quellcodezeilen wie diese:
X++:
#define.MySimpleMacro('The string value')
Dies ist die am meist verwendete Art der Macrodefinition innerhalb von Dynamics AX.
So weit, so gut.
Es gibt allerdings Konstellationen von “Werten”, welche bei dieser Art der Macrodefinitionzu einer Fehlermeldung beim speichern führen.
Es bei dieser Art der Macrodefinition z.B. nicht möglich, eine schließende Klammerals Macrowert zu definieren.
Dies ist auch so im
MSDN dokumentiert:
http://msdn.microsoft.com/en-us/library/cc197110.aspx
Gerade bei der Verwendung von Regular Expressions (Regex) kann dies zu regelmäßigerVerwirrung führen, da man gerne die weiteren Macrodefinitions-Möglichkeiten vergisstund oder diese nicht so präsent sind.
Die Syntax
X++:
#define.Macroname(Wert)
sollte eigentlich nur verwendet werden um (einfache) Konstanten innerhalb des Quellcodeszu definieren.
Für alle anderen Fälle und wenn ein Macro mit mehr als einer Zeile benötigt wird,sollte folgende Syntax zu Definition eines Macros verwendet werden:
X++:
#localmacro.AnExample
// Some statements or text
#endmacro
Die Verwendung von #localmacro anstelle eines "(einfachen) #define erlaubt es nunauch mit schließenden Klammern als Macrowert zu arbeiten oder sogar ganze SQL oderX++ Codeblöcke zu verwenden.
Eine genauere Beschreibung von Dynamics AX Macros (deren Möglichkeiten und Einsatzgebiete)ist im MSDN dokumentiert:
Macrosin X++


Es wird keine Haftung oder Gewährleistung auf die Richtigkeit der gemachten Angaben gegeben. Die Verwendung erfolgt auf eigene Gefahr. Copyright © Axel Kühn (Aku's AX Blog,
http://blog.ak-home.net) and Mathias Füßler (jinx's AX Blog,
http://starside.eu)
More...