[Résolu] outil pour trouver les define ?

outil pour trouver les define ? [Résolu] - C++ - Programmation

Marsh Posté le 30-04-2007 à 15:42:57    

Bonjour,
 
je ne suis pas sûr que cet outil existe, j'ai même peur que non, mais je demande à tout hasard ;)
Mon problème c'est qu'en lisant des codes sources de gros logiciels on tombe souvent sur un truc du genre MAX_COUNT, et qu'on aimerait savoir où est la ligne "#define MAX_COUNT". La solution simple consiste à faire un grep dans le répertoire des headers, mais s'il y a une grosse hiérarchie de répertoires avec des defines un peu partout c'est le bordel :/  
Donc j'aurais aimé savoir s'il existe une commande ou un logiciel qui pourrait chercher pour moi le define :)
 
Merci !


Message édité par freewol le 07-05-2007 à 12:32:25
Reply

Marsh Posté le 30-04-2007 à 15:42:57   

Reply

Marsh Posté le 30-04-2007 à 20:04:10    

grep recursif redirigé dans un awk bien senti ...
sinon si t'as un IDE kivabiäin, Find in Files :p

Reply

Marsh Posté le 01-05-2007 à 18:40:29    

Visual Studio, click droit, go to declaration
 

Reply

Marsh Posté le 01-05-2007 à 19:24:14    

j'utilise gcc ;)

Reply

Marsh Posté le 01-05-2007 à 21:35:37    

Tu fais un #define LETRUCQUETUCHERCHE, tu compile, et tu regarde le message de gcc:


test.cpp:5:1: warning: "CANARD" redefined
test.cpp:1:1: warning: this is the location of the previous definition


Message édité par 0x90 le 01-05-2007 à 21:35:49

---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
Reply

Marsh Posté le 02-05-2007 à 09:52:06    

oki, effectivement c'est une bonne idée :)
après comme le projet est plutôt gros, l'idée c'était de pouvoir trouver le define justement sans compiler, pour gagner du temps :)

Reply

Marsh Posté le 05-05-2007 à 14:20:53    

CTAGS http://ctags.sourceforge.net/
 
On pourrait espérer qu'au bout de 10 ans les gens connaissent. Mais non.

Reply

Marsh Posté le 05-05-2007 à 18:05:48    

tbp a écrit :

CTAGS http://ctags.sourceforge.net/
 
On pourrait espérer qu'au bout de 10 ans les gens connaissent. Mais non.


 
Je pensais pas qu'il trouvait aussi les definitions des define [:alberich]


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
Reply

Marsh Posté le 05-05-2007 à 20:58:05    

freewol a écrit :

j'utilise gcc ;)


 
Utilise Visual Studio, il n'y a pas mieux comme IDE
gcc, je ne l'utilise que pour recompiler au final.

Reply

Marsh Posté le 05-05-2007 à 21:10:01    

marctes a écrit :

Utilise Visual Studio, il n'y a pas mieux comme IDE
gcc, je ne l'utilise que pour recompiler au final.


(sauf s'il est sous linux ou autre chose que windows)


---------------
Töp of the plöp
Reply

Marsh Posté le 05-05-2007 à 21:10:01   

Reply

Marsh Posté le 06-05-2007 à 04:37:11    

marctes a écrit :

Utilise Visual Studio, il n'y a pas mieux comme IDE
gcc, je ne l'utilise que pour recompiler au final.


Installer cygwin
Project -> Makefile
Pointer vers GNU Make et le makefile
Prefixer CC/CXX pour executer cet horrible chose

Code :
  1. #!/usr/bin/perl
  2. my $cmdline;
  3. foreach (@ARGV) {
  4. $_ = "\"$_\"" if / /;
  5. $cmdline = $cmdline . " " . $_;
  6. }
  7. $cmdline = $cmdline . " -fmessage-length=0 -fdiagnostics-show-location=once";
  8. my $errors = 0;
  9. open(IN, "$cmdline 2>&1|" ) || die "can't run '$cmdline': $!";
  10. while(<IN> ) {
  11. chomp;
  12. next if (/ffunction-sections may affect/); # annoying. plonked.
  13. next if (/vectorized 0 loops in function/); #ditto
  14. next if length == 0;
  15. if (/^(\w:[\/\\][^:]+):([0-9]+):\s*([^:]+):(.*)/) {
  16.  print_msdev($1, $2, $3, $4);
  17.  next;
  18. }
  19. if (/^([^:]+):([0-9]+):\s*([^:]+):(.*)/) {
  20.  print_msdev($1, $2, $3, $4);
  21.  next;
  22. }
  23. s/\//\\/g;
  24. print "$_\n";
  25. };
  26. close(IN);
  27. exit ($errors > 0 ? 1 : 0);
  28. sub print_msdev {
  29. my ($file, $line, $type, $rest) = @_;
  30. ++$errors  if ($type =~/^error/);
  31. $file =~ s/\//\\/g;
  32. print "${file}(${line}): ${type}: ${rest}\n";
  33. }


... et hop, gcc est intégré à Visual Studio.

Reply

Marsh Posté le 07-05-2007 à 09:40:10    

Je vais regarder CTAGS tout de suite merci :)
 
Et sinon je suis sous linux donc à moins d'installer windows avec vmware puis gcc avec cygwin, sans parler du coût de la licence, je pense utiliser une solution autre que Visual Studio ;) Mais merci qd même pour l'info :)

Reply

Marsh Posté le 07-05-2007 à 10:42:11    

Le biniou précédent était juste là pour soulager les pauvres hères opérants en milieu hostile. Sous linux, ctags est intégré à peu près partout.


Message édité par tbp le 07-05-2007 à 10:42:31
Reply

Marsh Posté le 07-05-2007 à 12:32:04    

je viens d'essayer ctags, et ça y est je l'ai adopté : c'est génial !!
Je l'utilise avec vim mais ça fonctionne aussi avec emacs, et c'est super bien fait :)
 
Merci !

Reply

Marsh Posté le 08-05-2007 à 13:03:40    

_darkalt3_ a écrit :

(sauf s'il est sous linux ou autre chose que windows)


 
Ben non, j'utilise VS sous Windows, je transfère les sources sous Unix/Solaris et je recompile avec gcc pour l'exe final.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed