Macro e C++
C++ offre nuove funzionalità, alcune delle quali soppiantano quelle offerte dal preprocessore ANSI C. Queste nuove funzionalità migliorano l'indipendenza dai tipi e la prevedibilità del linguaggio:
In C++, gli oggetti dichiarati come
const
possono essere usati nelle espressioni costanti. Consente ai programmi di dichiarare costanti con informazioni sul tipo e sul valore. Possono dichiarare enumerazioni che possono essere visualizzate simbolicamente con il debugger. Quando si usa la direttiva del preprocessore#define
per definire le costanti, non è precisa e non indipendente dai tipi. Nessuna risorsa di archiviazione viene allocata per unconst
oggetto, a meno che il programma non contenga un'espressione che accetta il relativo indirizzo.La funzionalità della funzione inline C++ soppianta le macro di tipo funzione. I vantaggi dell'utilizzo delle funzioni inline rispetto alle macro sono:
Indipendenza dai tipi. Le funzioni inline sono soggette allo stesso controllo dei tipi delle funzioni normali. Le macro non sono indipendenti dai tipi.
Gestione corretta degli argomenti con effetti collaterali. Le funzioni inline valutano le espressioni fornite come argomenti prima dell'immissione del corpo della funzione. Pertanto, non c'è alcuna possibilità che un'espressione con effetti collaterali sarà non sicura.
Per altre informazioni sulle funzioni inline, vedere inline, __inline __forceinline.
Per la compatibilità con le versioni precedenti, tutte le funzionalità del preprocessore presenti in ANSI C e nelle specifiche C++ precedenti vengono mantenute per Microsoft C++.