2009-11-24 4 views
0

j'ai un grand projet qui a de nombreux changements pas encore pu consulter. Je veux les vérifier dans les mais ont ne prennent effet que quand un certain symbole # define'dUtiliser CVS pour #IFDEF mes changements

CVS a la possibilité de mettre en forme des diffs aveC# ifdef inséré en utilisant l'argument --ifdef. Cependant, ceci ne fusionne pas le # ifdef dans mon fichier de travail. Pire encore, la sortie comprend des trucs en-têtes qui devraient être supprimés.

Index: path/to/my/file.h,v 
=================================================================== 
RCS file: /path/to/my/file.h,v 
retrieving revision 1.17 
diff --ifdef=TEST -r1.17 file.h 

Quelqu'un at-il un script qui automatise le processus de faire la diff CVS, en supprimant les choses d'en-tête et copier le résultat en arrière sur le fichier de travail?

Un grand merci si quelqu'un peut vous aider.

Répondre

0

Je ne suis pas sûr de comprendre ce que vous voulez faire, donc je vais répondre à une question légèrement modifiée au cas où votre problème actuel deviendrait obsolète.

Généralement, #ifdef sont activés uniquement s'ils sont définis au moment de la compilation. Même s'ils sont extraits ou archivés, le code dans la macro ne sera pas inclus à moins qu'un symbole de compilation soit disponible. Par exemple:

#ifdef DEBUG 
cerr << "Some debug statement" << endl; 
#endif 

Sauf si vous définissez une option -DDEBUG (dans GCC, consultez votre Documenation du compilateur) ou #define DEBUG 1 quelque part ailleurs dans votre code (qui est disponible à la #ifdef), l'instruction de débogage ci-dessus ne sera pas compilé dans le binaire résultant. Cela étant dit, une utilisation intensive de #ifdef peut rapidement devenir un trou noir et rendre plus difficile la portabilité de votre code. Je recommanderais contre une telle stratégie.

Questions connexes