Funzionamento di base degli attributi
Esistono tre modi per inserire gli attributi nel progetto.Innanzitutto, è possibile inserire tali manualmente nel codice sorgente.In secondo luogo, è possibile inserire tali utilizzando la griglia delle proprietà di un oggetto nel progetto.Infine, è possibile inserire tali utilizzando diverse procedure guidate.Per ulteriori informazioni su come utilizzare la Finestra Proprietà e le diverse procedure guidate, vedere Creazione e gestione di progetti Visual C++.
A partire da Visual C++ .NET, il compilatore riconosce la presenza di attributi in un file di origine e può analizzarli e testare in modo dinamico durante la compilazione.
Come prima che, quando il progetto viene compilato, il compilatore coprire ogni file di origine C++, scrivendo un file oggetto.Tuttavia, quando il compilatore rileva un attributo, viene analizzato e sintatticamente è verificato.Il compilatore chiama quindi dinamicamente un provider dell'attributo per inserire il codice o apportare altre modifiche in fase di compilazione.L'implementazione del provider varia in base al tipo di attributo.Ad esempio, gli attributi ATL-correlati vengono implementati da Atlprov.dll.
Nella figura seguente viene illustrata la relazione tra il compilatore e il provider dell'attributo.
[!NOTA]
L'utilizzo di attributo non modifica il contenuto del file di origine.L'unico caso in cui il codice generato di attributo è visibile durante le sessioni di debug.Inoltre, per ogni file di origine nel progetto, è possibile generare un file di testo che visualizzano i risultati della sostituzione di attributo.Per ulteriori informazioni su questa procedura, vedere /Fx (Codice inserito unione) e Eseguire il debug del codice inserito.
Come la maggior parte dei costrutti C++, gli attributi hanno un set di funzionalità che definisce il corretto utilizzo.Questa operazione è nota come il contesto dell'attributo e viene indirizzata nella tabella di contesto dell'attributo per ogni argomento di riferimento dell'attributo.Ad esempio, coclasse l'attributo può essere applicato solo a una classe o una struttura esistente, rispetto a cpp_quote attributo, che può essere inserito in qualsiasi punto del file di origine C++.