PDA

View Full Version : [C] visionare direttive pre-processore


Freaxxx
26-10-2011, 18:53
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++)

GByTe87
27-10-2011, 10:04
Non ho capito bene qual'è la domanda... comunque Eclipse CDT risolve le define al mouseover. :D

Freaxxx
27-10-2011, 10:31
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.

GByTe87
27-10-2011, 12:42
Bah... io lo uso quotidianamento per alcuni progetti (anche abbastanza corposi) e non mi hami dato particolari rogne. :p

WarDuck
28-10-2011, 11:26
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.

Freaxxx
28-10-2011, 11:34
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.