|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Oct 2001
Messaggi: 231
|
[C]MACRO
Ciao a tutti,
sto tentando di capire l'uso di due macro definite nel codice che sto studiando, finora ho soltanto capito che sono usate per scopi di debug ma vorrei capire come?!se avete qualche guida su come fare il debug di un programma tramite macro potete anche postarmi il link ![]() cmq nel programma sono definite così: #define DEB(x) #define DDB(x) x spero in una risposta esauriente da parte vostra ![]() Grazie Luckymind
__________________
![]() Powered by Gnu/Linux Debian SID Kernel 2.6.10-ck5 |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Oct 2001
Messaggi: 11471
|
la prima macro cancella tutto quello che c'è tra parentesi. mentre la seconda lo riporta cosi come lo scrivi.
di solito uso queste macro per debuggare quel poco che scrivo ![]() Codice:
#include <stdio.h> #define DEBUG #if defined DEBUG # define dprintf(a, args...) printf (a, ## args) #else # define dprintf(a, args...) #endif int main (int argc, char** argv) { printf ("questa è una normale printf\n"); dprintf ("questa è una printf di debug\n"); #ifdef DEBUG for (int i = 0; i < 10; i++) printf ("debug !\n"); #else printf ("normale\n"); #endif return 0; } ![]() |
![]() |
![]() |
![]() |
#3 | ||||
Member
Iscritto dal: Oct 2001
Messaggi: 231
|
Non so come ringraziarti per la tua risposta che già mi ha fatto capire qualcosa
![]() ![]() Quote:
![]() Quote:
Quote:
![]() tornando ai due define che ti ho postato: Codice:
#define DEB(x) #define DDB(x) x ![]() il secondo define mi è più oscuro perchè non ne capisco l'utilità?! mi spiego meglio, se facessi come hai fatto tu definendo la macro DEBUG per discriminare tra dprintf(...) (...) e dprintf(...) allora vedo l'utilità nell'usare le due forme usando come identificatore della macro sempre dprintf ma definire come nel mio caso due macro con forme e identificatore diverso mi risulta dubbioso cioè a che serve scrivere questo(cito sempre un'istruzione del codice che sto studiando): Codice:
DDB(logmsg(V_LOGEXPORT, "table_flusher returns %p\n", x.h)); Codice:
logmsg(V_LOGEXPORT, "table_flusher returns %p\n", x.h); spero di essere stato chiaro ![]() Quote:
![]() P.S. per curiosità: Codice:
DEB(usleep(10000);) /* XXX testing only */
__________________
![]() Powered by Gnu/Linux Debian SID Kernel 2.6.10-ck5 |
||||
![]() |
![]() |
![]() |
#4 |
Member
Iscritto dal: Oct 2001
Messaggi: 231
|
UP...
non abbandonarmi VICIUS
![]() ![]()
__________________
![]() Powered by Gnu/Linux Debian SID Kernel 2.6.10-ck5 |
![]() |
![]() |
![]() |
#5 | |||
Senior Member
Iscritto dal: Oct 2001
Messaggi: 11471
|
Quote:
![]() Quote:
Quote:
![]() ciao ![]() |
|||
![]() |
![]() |
![]() |
#6 | ||||
Member
Iscritto dal: Oct 2001
Messaggi: 231
|
Quote:
Quote:
![]() Quote:
![]() Quote:
![]()
__________________
![]() Powered by Gnu/Linux Debian SID Kernel 2.6.10-ck5 |
||||
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 05:47.