View Full Version : [C] visionare direttive pre-processore
ho un problema semplice ma solo un IDE mi può aiutare, e non so quale, dovrei prendere visione di tutte le varie costanti e di tutti gli header realmente presi in considerazione dal preprocessore del compilatore ( uso sempre gcc ).
esempio:
#define N 10
#define M 15
#include <mio/dummy.h>
l'IDE mi dovrebbe informare che vede N e che ha valore 10, che vede M che ha valore 15, e che include mio/dummy.h; il progetto adopera inclusioni di header ramificate, cioé capita che qualche header ne includa un altro, e di conseguenza è una operazione alquanto laboriosa andare a scovare tutte le definizioni e le inclusioni manualmente, inoltre a volte ci sono giustamente degli ifndef per evitare inclusioni multiple ma che complicano di più il mio lavoro.
Che IDE/plugin mi consigliate?
clockover
26-10-2011, 23:30
magari non ho capito bene la domanda ma con gcc puoi scegliere di effettuare solo lo stadio di preprocessamento con l'opzione -E
gcc -E source.c
AnonimoVeneziano
27-10-2011, 03:06
Visual studio è ottimo a fare ciò , ma se non sei su Windows allora forse Eclipse , prova ... non ne sono sicuro (a dire il vero ho usato molto poco eclipse per il C/C++)
Non ho capito bene qual'è la domanda... comunque Eclipse CDT risolve le define al mouseover. :D
magari non ho capito bene la domanda ma con gcc puoi scegliere di effettuare solo lo stadio di preprocessamento con l'opzione -E
gcc -E source.c
conosco questa opzione ma è praticamente inusabile, viene fuori un listato enorme anche per un programma di 4 righe con 2 inclusioni, mi servirebbe qualcosa gestito da un IDE per praticità, un po' come il riquadro in Matlab dove riporta tutte le variabili che attualmente esistono nella tua sessione ( il riquadro solitamente in alto a destra ).
Visual studio è ottimo a fare ciò , ma se non sei su Windows allora forse Eclipse , prova ... non ne sono sicuro (a dire il vero ho usato molto poco eclipse per il C/C++)
e come faccio con Visual Studio? Ho VS2010 Ultimate.
Non ho capito bene qual'è la domanda... comunque Eclipse CDT risolve le define al mouseover. :D
il CDT è altamente buggato, Eclipse lo uso spesso, ma per quanto riguarda il C e il C++ direi che è da evitare.
Bah... io lo uso quotidianamento per alcuni progetti (anche abbastanza corposi) e non mi hami dato particolari rogne. :p
Se ho capito bene:
se sei sotto linux fai una
find . -name '*' -exec grep #define {} \; -print
dalla directory radice del sorgente, e ti stampa tutte le define con il relativo file che le contiene ;).
Se alla grep passi il parametro -n ti stampa anche il numero di riga.
Detto ciò i guarded block (#ifndef ... ) sono necessari a volte.
Bah... io lo uso quotidianamento per alcuni progetti (anche abbastanza corposi) e non mi hami dato particolari rogne. :p
il mio unico problema è che nel mio caso l'output è realmente enorme.
Se ho capito bene:
se sei sotto linux fai una
find . -name '*' -exec grep #define {} \; -print
dalla directory radice del sorgente, e ti stampa tutte le define con il relativo file che le contiene ;).
Se alla grep passi il parametro -n ti stampa anche il numero di riga.
Detto ciò i guarded block (#ifndef ... ) sono necessari a volte.
proverò, sugli ifndef sono d'accordo, ma il mio problema non è toglierli, non mi danno nessun impiccio, devo solo capire che valori ottiene e considera il parser del preprocessore.
vBulletin® v3.6.4, Copyright ©2000-2026, Jelsoft Enterprises Ltd.