La migliore risposta
#define è unistruzione pre processore in linguaggio C.
Tutte le istruzioni con prefisso # sono preprocessore istruzioni.
1.
#define MAX\_STUDENTS 200
#define viene utilizzato per dichiarare le costanti macro (di qualsiasi tipo), come mostrato sopra. Se un valore viene utilizzato in più posizioni, nel codice, la manutenzione del codice diventa facile. Quando è necessario modificare il valore di MAX\_STUDENTS, è necessario modificarlo solo in una riga di codice anziché in più posizioni.
Lo svantaggio di questo approccio è il debugger, che non riconosce questo valore.
int arr [MAX\_STUDENTS];
Può essere utilizzato anche nella compilazione condizionale, come mostrato di seguito
#define WINDOWS
#ifdef WINDOWS
..
.. code of Windows OS
..
#else
..
.. code of Linux OS
..
#endif
NOTA: #undef può essere utilizzato per annullare la definizione
2.
#define SQUARE (x) (x * x)
le funzioni macro, sono come le normali funzioni, tranne per il fatto che il preprocessore sostituisce le chiamate al metodo, invece di chiamare la funzione durante il runtime.
I vantaggi sono che si evita il sovraccarico delle chiamate di funzione, quindi lesecuzione è più veloce
SQUARE (2 + 3)
Lo svantaggio è che la funzione macro non si comporta come le normali funzioni. Ad esempio, si consideri la chiamata macro precedente SQUARE (2 + 3), che restituisce un valore 11 errato, dove come funzione normale restituisce 25.
Si consiglia di utilizzare la funzione macro (invece della funzione normale), quando la dimensione è una o due righe e non ha effetti collaterali, come mostrato sopra.
Risposta
#define è un C preprocessore direttiva utilizzata per definire le macro .
Analizziamolo.
Una direttiva del preprocessore è unistruzione di programma che viene invocata prima che abbia luogo la compilazione del programma. In realtà, qualsiasi riga seguita da un # è un preprocessore. Ciò include anche include drective. Le direttive del preprocessore vengono utilizzate per fornire istruzioni generali o dati obbligatori che vengono utilizzati allinterno di un programma.
Una macro è un blocco di codice a cui è stato dato un nome. Qualsiasi occorrenza di quel nome è repla ced dal valore della macro. Diciamo, ho definito la macro denominata AMOUNT il cui valore è 200. Ora ogni volta che la parola AMOUNT viene utilizzata nel programma viene sostituita dal numero 200 prima della compilazione. A differenza delle variabili, dove i dati sono effettivamente memorizzati al loro interno, le macro agiscono piuttosto come nomi di alias.
La sintassi della direttiva #define è la seguente:
#define MACRONAME value
O
#define MACRONAME (expression)
A una macro può essere assegnato un valore numerico oltre a un carattere (deve essere racchiuso tra virgolette). Le macro possono essere utilizzate come qualsiasi altra variabile costante.
Puoi anche annullare la definizione di una macro utilizzando la direttiva #undef. Ecco la sintassi:
#undef MACRONAME
//MACRONAME can no longer be used in the program
Spero che la mia risposta sia stata utile.