Warum kennt Delphi eigentlich immernoch keine Makros?
Vorallem beim Übersetzen von C-Headern wäre sowas einfach zu praktisch.
So schwer sollte das doch nicht zu implementieren sein?
Und es, bezüglich der Delphi-Language, kompatibel zu implementieren ist och nicht unmöglich.
Delphi-Quellcode:
{$DEFINEMACRO param '; xyz: Integer'}
{$DEFINEMACRO param_x ', xyz'}
{$DEFINEMACRO say 'Beep; ShowMessage(''Hello %1'');' string}
{$DEFINEMACRO msg '(''%3'' + Format('' %%s %%d'', [''%1'', %2]))' string integer string}
procedure Test(abc: string {$MACRO param}); // procedure Test(abc: string ; xyz: Integer);
begin
{$IFMACRO param}
ShowMessage(IntToStr(xyz));
{$ENDIF}
OtherProc(abc {$MACRO param_x});
{$MACRO param 'World'} // Beep; ShowMessage('Hello World');
ShowMessage{$MACRO msg 'World' 123 'Hello'}; // ShowMessage('Hello' + Format(' %%s %%d', ['World', 123]));
end;
Der Compiler braucht das doch nur beim Parsen im Code zu ersetzen und danach zu interpretieren.
Natürlich sollte er alle Zeilenumbrüche in den Macros ignorieren (durch Leerzeichen zu ersetzen) ... dann dürfte auch der Debugger keine Probleme bekommen, da sich die Zeilenpositionen nicht verändern.
Voll blöd, daß man immernoch nicht wieder selber einen Precompiler reinhängen kann, um das selbst zu implementieren.