Macro in lingua C

Macro in lingua C
Una macro in lingua C è un pezzo di codice che è stato assegnato un nome. Quando il nome viene utilizzato ovunque nel programma, il valore macro viene sostituito prima della compilazione del programma. In questo articolo, vedremo in dettaglio come scrivere una macro in lingua C.

Considera il seguente codice:

INIZIO
Intero n = 5;
Stampa ("valore di n è %d", n);
FINE

Il codice sopra non è un codice C valido.

Ma il seguente codice è valido:

//Esempio 1.C
#define start int main ()
#define end
#define integer int
#define print (a, b) printf (a, b)
INIZIO
Intero n = 5;
Stampa ("valore di n è %d", n);
FINE

Prima della compilazione, la macro start, intero, stampa e fine è stata sostituita dal loro valore e il codice diventa un codice C valido. Possiamo controllare usando il seguente comando:

GCC -e Esempio1.C

Questo comando mostrerà dopo aver espanso tutte le macro.

Ora vedremo diversi tipi di macro:

1. Macro simili a oggetti:

Sintassi:

#define macro_name macro_value
  • La macro inizia sempre con #define
  • macro_name è un nome definito dall'utente della macro
  • macro_value è il valore della macro. Potrebbe essere qualsiasi cosa, ma una riga e la macro corpo termina con le estremità di quella linea. Non richiede Semicolon (;) alla fine. Anche lo spazio è considerato.

Se la macro prende più di una riga, possiamo farlo come segue:

#define macro_name macro_value1 \
macro_value2 \
macro_value3
#define max 200

Questa macro sembra un oggetto dati ecco perché questo tipo di macro chiamato macro simile a oggetti.

// Esempio2.C
//#includere
#define max 200
int main ()

printf ("max valore è: %d", max);
restituzione 0;

In Exapmle2.C, max è una macro. Dall'output, lo osserviamo Max è sostituito dal suo valore 200.

2. Macro simili a funzioni:

Sintassi:

#define macro_name () macro_value

macro_name è un nome definito dall'utente della macro. La coppia di parentesi deve mettere dopo il macro_name. Nessun spazio è consentito tra macro_name e parentesi. Possiamo anche passare argomenti in questo tipo di macro.

#define aggiungi (x, y) x+y

Questa macro sembra una chiamata di funzione ecco perché questo tipo di macro chiamato macro simile a una funzione.

// Esempio3.C
#define aggiungi (x, y) x+y
int main ()

int a;
galleggiante B;
A = ADD (4,5);
B = Aggiungi (2.5,3.6)
restituzione 0;

Nell'esempio3.C, Abbiamo visto che, a differenza della funzione di C, la macro sostituisce solo il codice con argomenti senza calcolarlo. Quindi, possiamo passare un tipo di dati diverso usando la stessa macro.

Se mettiamo uno spazio tra il nome macro e la parentesi, funziona come una macro simile a oggetti. Sotto c Esempio lo illustra questo.

// Esempio4.C
#define aggiungi (x, y) x+y
int main ()

int a;
galleggiante B;
A = ADD (4,5);
B = Aggiungi (2.5,3.6)

In Esempio4.C, abbiamo visto che l'aggiunta macro è sostituita da (x, y) x+y . Come una macro simile a oggetti.

3. Macro per incollaggio di token:
In C linguaggio, l'operatore ## viene utilizzato per incollaggio token. Usando questo operatore, possiamo combinare due token validi in un token valido.
Esempio:

// Esempio5.C
#define marge (x, y) x ## y
int main ()

int num = marge (52,34);
restituzione 0;

Se proviamo a mettere in scena incolla che non genera un token valido, il compilatore C fornisce un errore o un avvertimento.

// Esempio6.C
#define marge (x, y) x ## y
int main ()

int num = marge (52,+);
restituzione 0;

In Esempio6.C, Abbiamo un messaggio di errore perché, dopo una combinazione di due token, otteniamo un token non valido '52+'.

4. Macro per la stringa:
In lingua C, l'operatore # viene utilizzato per convertire un macro parametro in una costante di stringa. Quando un operatore # precede un parametro macro, il parametro si converte in una stringa letterale. La stringa può essere utilizzata per le macro simili a oggetti e funzionalità.
Esempio:

// Esempio7.C
#define Stringizing (x) #x
int main ()

printf (Stringizing (Hello World));
restituzione 0;

In Esempio7.C Abbiamo una stringa "ciao mondo" usando la macro di stringa.

Conclusione:

Questo articolo ha appreso tutti i tipi di macro Macro simili a oggetti, Macro simili a funzionalità, Macro per incollaggio di token, Macro per stringarsi e macro per la stringa in lingua C. Ora possiamo usare una macro nel nostro programma C senza dubbio.