2009-06-08 11 views
0

Ich versuche Gnu - cpp zu zwingen, spezielle Kommentare wie/* + ... /zu behalten, weil ich sie für Optimiser Hinweise brauche. Es funktionierte gut mit cpp von xlc (AIX), aber jetzt bekomme ich ein zusätzliches Leerzeichen zwischen Schrägstrich und Plus (/)?cpp fügt zusätzlichen Platz zwischen den Token ein

z.B .:

$ cat cpp-test.sql 
#define _STAR * 
#define OPT_HINT(x) /_STAR+ x _STAR/ 

select OPT_HINT(INDEX(TABLE table_pk)) * from table 

$ /usr/bin/cpp -E < cpp-test.sql 
# 1 "<stdin>" 
# 1 "<built-in>" 
# 1 "<command line>" 
# 1 "<stdin>" 

select/*+ INDEX(TABLE table_pk) */ * from table 

$ 

Ich würde wünschen, "select/* + INDEX (TABLE table_pk) */* vom Tisch" zu bekommen.

Irgendwelche Vorschläge?

Mit freundlichen Grüßen

Dirk

Antwort

2

Sie einfügen können Token zusammen, um den ##-Preprozessor-Operator:

#define F foo 
#define B bar 

F##B 

produziert

foobar 

Aber beachten Sie, dass CPP soll sein der C (und C++) Preprozessor - es soll kein Allzweckwerkzeug sein . Wenn Sie solche Sachen wirklich machen wollen, werfen Sie einen Blick auf alternative Makro-Prozessoren, wie zum Beispiel m4.

Beachten Sie außerdem, dass das Erstellen von Kommentaren für C- oder C++ - Code nicht funktioniert, da sie in einer anderen Vorprozessorphase als Makros verarbeitet werden.

Verwandte Themen