La macro è un'abbreviazione che rappresenta un po 'di codice in un linguaggio di programmazione. Queste macro aiutano a semplificare e ridurre il codice per evitare ridondanza e codifica ripetitiva. In modo che vengano ridotti gli errori che si verificano principalmente a causa della codifica ripetuta. Il vantaggio principale per quanto riguarda le macro è che converte il codice e crea un programma di assemblaggio più leggibile.
Espansione macro
Una macro contiene un nome, un insieme di parametri formali e il corpo del codice. Il nome macro viene utilizzato con l'insieme di parametri e sostituito da un pezzo di codice generato dal suo corpo. Questo costituisce una macro espansione. Ciò consente al programmatore di creare e definire le operazioni di pseudo, quelle operazioni desiderabili e quelle che non sono implementate come istruzioni del processore. La macro ha una qualità specifica in cui scrive automaticamente il programma. Il nome macro è scritto come è una parola chiave nel codice. Agisce come una chiamata a quella macro specifica, proprio come una chiamata di funzione. Quindi questo nome viene sostituito da qualche altro codice di macro corpo come abbiamo descritto sopra. Questa sostituzione della chiamata con la copia elaborata è l'espansione della chiamata macro. Ed è usato anche in C e C ++.
Una volta definita una macro, non possiamo ridefinirla a un valore diverso senza rimuovere la prima definizione originale. Ma è possibile ridefinire la macro con la stessa definizione di macro già definite. La direttiva #undef è responsabile della rimozione della definizione di macro. Una volta rimossa la definizione, ora possiamo ridefinire la macro con un valore diverso.
Macro in c++
Ci sono due tipi:
Macro simili a oggetti
Le macro simili a oggetti non fanno alcun argomento. Questi sono identificatori che sono sostituiti dal valore. Questi sono principalmente usati per rappresentare valori numerici e costanti.
#define PL 3.17
PL è il nome della macro che verrà sostituito dal valore 3.17.
Macro simili a funzionalità
Questi tipi di macro possono accettare argomenti. Queste macro sembrano una chiamata di funzione. Ad esempio, prendi un esempio in cui Max è il nome della macro.
#define max (a, b) ((a)<(b)?(a): (b))
Le macro di solito non generano le chiamate della funzione.In C ++, sono preferibili le funzioni inline.
Macro predefinite
Compilatore Microsoft C/C ++ che ha macro predefinite MSVC che dipendono dal linguaggio C ++, dal target della compilation e dalle opzioni del compilatore. MSVC supporta macro preprocessore predefinite richieste dagli standard ANSI/ISO C99. Queste macro predefinite non usano argomenti e non possono essere ridefiniti.
Molte macro predefinite possono essere utilizzate in codice sorgente C/C ++. Alcuni di loro sono descritti qui che sono più comunemente usati.
__Data__
La data di compilazione del programma nel file è rappresentata da questa macro funzione. La data è una stringa per il formato del mese dell'anno ed è un valore costante. Questo tipo di macro è sempre definito.
__Tempo__
Descrive il tempo per la traduzione dell'unità preelaborata. Simile ad oggi, ha un formato specifico in cui è scritto Ore: minuti: secondi, allo stesso modo del tempo restituito.
Questo tipo di macro è anche sempre definito.
__File__
Questo rappresenta il nome del file corrente. Si espande a una stringa di carattere letterale. Ciò garantisce che venga visualizzato il percorso che porta al file. È una macro sempre definita.
__Linea__
Rappresenta il numero di linea nel formato intero di una sorgente corrente. Questa macro è definita come altri e il suo valore è cambiato con l'aiuto di #LINE.
Ora evidenzieremo alcuni esempi di funzione macro __line__c ++.
__Linea__
Per avere un'idea del funzionamento di questa macro, qui abbiamo citato un esempio. Innanzitutto viene utilizzata una libreria per il flusso di input e output. Quindi abbiamo utilizzato un registro di errore della funzione che mantiene il registro degli errori. Questo ha un parametro per accettare la riga sotto forma di una stringa e un messaggio. Questa funzione visualizzerà il numero di riga con il messaggio passato dal programma principale alla macro.
#define log (msg) Errorlog (__line__, MSG)
Dopodiché, abbiamo definito una macro. Ciò accetterà la stringa della riga del messaggio dalla funzione principale che è passata come argomento quando questa macro viene chiamata. Allo stesso modo, la funzione del registro degli errori viene chiamata con la macro line e il messaggio come parametri. Il file verrà salvato con un'estensione del .C file di codice sorgente. Come dobbiamo vedere i risultati della piattaforma Linux, vai al terminale e applica i comandi per compilare ed eseguire il file. Usa un compilatore G ++ per C++.
$ g ++ -o f f.C
$ ./F
Puoi vedere che anche con gli spazi, il numero di linea viene identificato tramite la macro di linea. Da questo esempio, hai visto la funzionalità di una macro __line__. Ma nel prossimo esempio, tutte le macro sono collettivamente nel programma. Abbiamo usato "cout" per stampare linee. Ogni riga contiene una macro diversa in essa e quel valore viene visualizzato. Ad esempio, per la data che abbiamo usato:
Std :: cout << ("Date :%s\n" , __Date) << std ::endl;
Ora vedremo l'output. Puoi vedere che il nome del file, la data di compilazione, il tempo della compilation e il numero di riga corrente vengono visualizzati in modo molto efficace tramite un singolo pezzo di codice per ogni macro.
Usi/vantaggi delle macro
Conclusione
'__line__c ++ macro' è un articolo scritto per elaborare le funzionalità di base della macro descrivendo i tipi e anche le macro predefinite e ulteriormente i loro tipi. Tutte queste funzioni sono spiegate con l'aiuto di un esempio. Le macro sono facilmente implementate e richiedono meno tempo nella compilazione dei codici. Queste caratteristiche sono progettate da quei programmatori che vogliono creare innovazioni e condizioni utilizzando un piccolo codice nel programma di origine base. A tale scopo, alla fine, l'articolo è accompagnato dagli usi della macro nel codice sorgente e descrive come sono benefici in alcuni aspetti.