[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [linux_var] Strano codice C





Il giorno mar 22 mag 2018 alle ore 16:04 Salvatore Racano <salvatoreracano@gmail.com> ha scritto:

2018-05-22 15:32 GMT+02:00 Giovanni Orlandi <orlangio@gmail.com>:
Ciao,

in un file C di esempio ho trovato questo strano codice che mostro sotto:

#define handle_error(msg) do { perror(msg); exit(EXIT_FAILURE); } while (0)

A quanto capisco io il ciclo do { } while ( 0 ) viene eseguito sempre una sola volta,
ma a che cosa servirebbe ?
Forse ad evitare delle ottimizzazioni in sede di compilazione ?

Semplicemente per usare una macro come se fosse una funzione ed evitare che la macro una volta espansa crei effetti non voluti (Come detto da Salvatore).
Ad esempio, è buona cosa evitare di mettere ";" in fondo alla macro.
Nulla vieta di fare
#define A 4; ma meglio
#define A 4

Ciao,
Lorenzo
 
_______________________________________________
Talking mailing list
Talking@ml.linuxvar.it
http://ml.linuxvar.it/cgi-bin/mailman/listinfo/talking