Ciao a tutti, potreste illustrarmi le differenze tra macro e funzioni e i vantaggi e svantaggi di entrambe?
Inviato dal mio Nexus 5 utilizzando Tapatalk
Ciao a tutti, potreste illustrarmi le differenze tra macro e funzioni e i vantaggi e svantaggi di entrambe?
Inviato dal mio Nexus 5 utilizzando Tapatalk
In poche parole le macro sono difficili da debbugare e siccome sostituiscono il testo solamente ci possono anche essere errori che non ti segnala in quanto sostituisce solo il testo?
Inviato dal mio Nexus 5 utilizzando Tapatalk
Più o meno.
Le macro le ho trovate utili perché puoi definirle alla compilazione:
Codice:#include <stdio.h> main() { #ifdef DEBUG printf("debug mode"); #else printf("normal mode"); #endif }Codice:g++ ... > normal modeCodice:g++ ... -D DEBUG > debug mode
Yay!
Altra cosa carina* è che tramite macro puoi generare, a forza di define ed undef, funzioni diverse a compile time che contengono un core comune, oltre ad essere un modo per scrivere intrinsic function pure in C89.
"Eh, ma le funzioni non servono apposta per modularizzare il codice ? Metti il core comune in una funzione separata": Si, e sarebbe la cosa migliore, ma il problema è che una chiamata a funzione introduce overhead e ci son situazioni in cui non puoi permettertelo.
Spoiler:
E fai male. Non son da abusare, ma le macro permettono di fare un sacco di giochetti utili tipo le stampe di debug che ha mostrato sopra. Come ogni cosa son da soppesare pro e contro.
Ultima modifica di panzone; 13-07-2015 alle 15:34:38
E , scusate se lo chiedo per l'ennesima volta, questi pro e contro quali sarebbero dettagliatamente?
Inviato dal mio Nexus 5 utilizzando Tapatalk
No lo chiedevo solo per informazione, visto che sto cercando di imparare il linguaggio
Inviato dal mio Nexus 5 utilizzando Tapatalk
Un altra cosa... Dato che ho l'occasione di parlare con grandi esperti(se non si è capito siete voi) vi faccio un altra domanda, cosa sono i flag?
Inviato dal mio Nexus 5 utilizzando Tapatalk
Non saprei... Esiste una definizione che riguarda il c o la cosa è generale?
Inviato dal mio Nexus 5 utilizzando Tapatalk
Uno degli utilizzi principali delle macro è per scrivere codice cross-platform.
E i flag?
Inviato dal mio Nexus 5 utilizzando Tapatalk