mekakic
2009-08-20, 14:32:00
Hallo.
Ich versuche mit dem Präprozessor etwas zu generieren, was Abhäng vom letzten Macro ist und bin nicht sicher ob das funktioniert - bzw. sowas wie ein 2pass Macro Preprocessor.
Ich habe zwei Definitionen die Code generieren.
Einmal DTAG und einmal DEND. Im Code kann man diese Makros aufrufen, muß aber irgendwann nach einem DTAG wieder ein DEND aufrufen. Ich möchte nun irgendwie erkennen, ob ich beim Aufruf eines DTAG bereits zuvor ein DTAG aufgerufen wurde und dann abhängig von einem anderen Macro anderen Code generieren. Ebenso möchte ich beim Aufruf von DEND erkennen, ob zuvor (d.h. vor dem letzten DEND) Aufruf wieder zuvor ein DTAG aufgerufen wurde.
Ich bin unsicher ob ich das möglich ist. Ich hatte mir überlegt einen #define DTAG_OPEN zu setzen beim ersten Aufruf eines DTAG. Und dann immer darauf zu überprüfen und bei einem DEND wieder ein #undef DTAG_OPEN zu machen. Allerdings funktioniert das nicht und als ich mir den Preprocessor Output angesehen habe, habe ich gesehen, daß dann nur der Code generiert wird in dem dann diese #define und #undef Kommandos drinstehen - die aber nicht mehr aufgelöst werden. Das heißt über das Stück müßte der Preprocessor irgendwie ein zweites Mal drübergehen. Geht irgendwie was ich möchte?
Ich versuche mit dem Präprozessor etwas zu generieren, was Abhäng vom letzten Macro ist und bin nicht sicher ob das funktioniert - bzw. sowas wie ein 2pass Macro Preprocessor.
Ich habe zwei Definitionen die Code generieren.
Einmal DTAG und einmal DEND. Im Code kann man diese Makros aufrufen, muß aber irgendwann nach einem DTAG wieder ein DEND aufrufen. Ich möchte nun irgendwie erkennen, ob ich beim Aufruf eines DTAG bereits zuvor ein DTAG aufgerufen wurde und dann abhängig von einem anderen Macro anderen Code generieren. Ebenso möchte ich beim Aufruf von DEND erkennen, ob zuvor (d.h. vor dem letzten DEND) Aufruf wieder zuvor ein DTAG aufgerufen wurde.
Ich bin unsicher ob ich das möglich ist. Ich hatte mir überlegt einen #define DTAG_OPEN zu setzen beim ersten Aufruf eines DTAG. Und dann immer darauf zu überprüfen und bei einem DEND wieder ein #undef DTAG_OPEN zu machen. Allerdings funktioniert das nicht und als ich mir den Preprocessor Output angesehen habe, habe ich gesehen, daß dann nur der Code generiert wird in dem dann diese #define und #undef Kommandos drinstehen - die aber nicht mehr aufgelöst werden. Das heißt über das Stück müßte der Preprocessor irgendwie ein zweites Mal drübergehen. Geht irgendwie was ich möchte?