2009-06-08 5 views
0

J'essaye de forcer gnu - cpp à garder des commentaires spéciaux comme/* + ... /parce que j'en ai besoin pour des conseils d 'optimisation. Cela a bien fonctionné avec cpp de xlc (AIX) mais maintenant je reçois un espace additionnel entre slash et plus (/)?cpp insère un espace supplémentaire entre les jetons

.: par exemple

$ 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 

$ 

Je désire obtenir "select/* + INDEX (TABLE table_pk) */* de la table".

Des suggestions?

Meilleures salutations

Dirk

Répondre

2

Vous pouvez coller des jetons ensemble à l'aide de l'opérateur ## préprocesseur:

#define F foo 
#define B bar 

F##B 

produit

foobar 

Mais notez que cpp est destiné à être le pré-processeur C (et C++) - il n'est pas supposé être un outil polyvalent . Si vous voulez vraiment faire ce genre de choses, jetez un oeil à d'autres processeurs de macro, tels que m4.

Notez également que les commentaires de construction ne fonctionneront pas pour le code C ou C++, car ils sont traités dans une phase de pré-processeur différente des macros.

Questions connexes