View Full Version : [c] stampare messagi in fade di debug
processore
29-09-2010, 09:39
salve.
devo fare un progetto e nelle specifiche mi chiede questo.
Direttive al preprocessore
Utilizzando le direttive al preprocessore definire una costante DEBUG. Quando
DEBUG non sarà posta a 0, saranno stampati alcuni messaggi utili in fase di
debugging; diversamente tali messaggi non saranno stampati.
e non riesco a capire cos adevo fare.
mi potreste aiutare
grazie
int main() {
printf("O hai!\n");
#ifdef DEBUG
printf("ZOMG HAAAXXXX!\n");
#endif
printf("Kthxbai!\n");
return 0;
}
Tipo cosi... anche se a farlo per ogni messaggio diventi stronzo. Ti conviene definire una macro a cui passi il messaggio che riscrive una printf in caso sia definiva DEBUG o non faccia niente in caso contrario.
int main() {
printf("O hai!\n");
#ifdef DEBUG
printf("ZOMG HAAAXXXX!\n");
#endif
printf("Kthxbai!\n");
return 0;
}
Tipo cosi... anche se a farlo per ogni messaggio diventi stronzo. Ti conviene definire una macro a cui passi il messaggio che riscrive una printf in caso sia definiva DEBUG o non faccia niente in caso contrario."quando non sarà posta a zero" vuol dire:
#if (DEBUG)
..
#endif
o al più
#if defined(DEBUG) && (DEBUG)
..
#endif
Vero... sorry. E' che mi sembra una cagata. O la definisci o non la definisci.
anche perché i compilatori la definiscono da soli compilando in modalità debug :asd:
processore
11-10-2010, 11:21
scate ma non riesco a capire.
io faccio
#DEFINE DEBUG 0
poi se non ho capito male devo fare
#if (DEBUG > 0)
printf("hhhhhhhhhhh");
pero non riesco a capire dove li devo mettere questi pezzi di codice.
li devo mettere a ogni variabile ?
oppure dopo ogni funzione ?
poi un altra cosa, siccome il progetto comprende diversi file, questi messaggi vanno messi solo nel file contenente il main oppure in tutti i file.?
grzie.
processore
11-10-2010, 13:02
il problema e che non capisco prorpio l'utilita di fare queste cose.
per questo avrei bisogno di chiarimenti.
forse vanno messe per testare la buona riuscita delle funzioni ?
vanno messe solo nel file del main ?
be', in generale in fase di debug è utile controllare che le variabili assumano i giusti valori, che in certi casi si entri in un if piuttosto che nell'else.. sei tu a sapere cosa fa il tuo programma
processore
11-10-2010, 13:20
il mio programma e una calcolatrice che prende un file in imput e scrive il risultato dell'operazione in un file di output.
scusa se faccio cosi tante domande.
ma non ho minimamente idea di dove mettere queste condizioni.
potrebbe andare bene se le metto nelle variabili dove vengono memorizzate i numeri presi dal file in imput ?
siccome uso anche uno stack va messa anche qualcuna nello stack ?
andrebbe bene mettere una per testare la lettura e la scrittura dal / su file ?
processore
13-10-2010, 13:45
non ce nessuno che mi puo aiutare.
ma non c'è un modo giusto di fare una cosa del genere, servono per fare il debug, se non servono a te non servono a nessuno
processore
14-10-2010, 11:04
hai raggione.
pero il problemae che serve per il progetto e il prof ha detto che li devo mettere.
io ho provato a fare cosi.
#define DEBUG 1
p_File_in = fopen(NF_in,"r");
#if DEBUG > 0
printf("file aperto correttamente \n");
#else
printf("errore");
#endif
system("PAUSE");
e corretto ?
pro quando compilo anche se metto un nome di un file che non esiste mi dice lo stesso file aperto correttamente
se il file non esiste non dovrebbe entrare nel else ?
grazie
alemoppo
14-10-2010, 21:57
Ma che centra!
Quello è pre-processore.. non viene eseguito durante l'esecuzione del programma!
Un conto è un else di un costrutto if-else del C, un conto è un if - else di preprocessore!...
Poi, tra l'altro, se non erro, l'else del preprocessore non era #else, ma #elif
..Ti consiglio di leggerti qualche guida di C :)
Ciao!
hai raggione.
pero il problemae che serve per il progetto e il prof ha detto che li devo mettere.
io ho provato a fare cosi.
#define DEBUG 1
p_File_in = fopen(NF_in,"r");
#if DEBUG > 0
printf("file aperto correttamente \n");
#else
printf("errore");
#endif
system("PAUSE");
e corretto ?
pro quando compilo anche se metto un nome di un file che non esiste mi dice lo stesso file aperto correttamente
se il file non esiste non dovrebbe entrare nel else ?
grazieil controllo che il file sia stato aperto correttamente dovresti farlo a prescindere, non è una questione che riguarda solo la fase di debug, e comunque non si fa così ma:
p_File_in = fopen(NF_in,"r");
if (!p_File_in)
printf("Errore");
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.