Utilizzo di $(Inherit) e $(NoInherit)
Aggiornamento: novembre 2007
In questa sezione verranno forniti alcuni esempi su come utilizzare le macro $(Inherit) e $(NoInherit).
Impostare il seguente percorso di inclusione aggiuntivo (/I) a livello di progetto:
c:\test
Per un determinato file, impostare il seguente percorso di inclusione aggiuntivo:
c:\test2;c:\mystuff
Osservare la pagina delle proprietà Riga di comando del file. Essa include:
/I"c:\test2" /I"c:\mystuff" /I"c:\test"
Ciò accade in quanto è presente una macro $(Inherit) implicita alla fine dei percorsi di inclusione aggiuntivi della configurazione del file se $(Inherit) non è inserita esplicitamente nell'elenco.
Se tuttavia si modifica il percorso di inclusione aggiuntivo della configurazione del file nel modo seguente:
c:\test2;$(Inherit);c:\mystuff
verrà espanso nel modo seguente nella pagina delle proprietà Riga di comando del file:
/I"c:\test2" /I"c:\test" /I"c:\mystuff"
Il percorso di inclusione aggiuntivo dalla configurazione del progetto si trova nel punto in cui è stata inserita la macro $(Inherit). La macro $(Inherit) viene utilizzata per garantire l'inserimento dei valori ereditati che fanno parte di questa proprietà. Può trovarsi in qualunque punto dell'elenco.
Se si modifica il percorso di inclusione aggiuntivo della configurazione del file nel modo seguente:
$(Inherit);c:\test2;$(Inherit);c:\mystuff
verrà espanso nel modo seguente nella pagina delle proprietà Riga di comando del file:
/I"c:\test" /I"c:\test2" /I"c:\test" /I"c:\mystuff"
Se si modifica il percorso di inclusione aggiuntivo della configurazione del file nel modo seguente:
c:\test2;c:\mystuff;$(NoInherit)
verrà espanso nel modo seguente nella pagina delle proprietà Riga di comando del file:
/I"c:\test2" /I"c:\mystuff"
La parte /I"c:\test" dalla configurazione del progetto non è più presente. La posizione della macro $(NoInherit) non incide sul modo in cui viene utilizzata, a differenza di $(Inherit), che tiene conto della posizione.
$(NoInherit) ha la precedenza su $(Inherit). Se $(NoInherit) è presente, $(Inherit) verrà ignorata. La modifica, ad esempio, del percorso di inclusione aggiuntivo della configurazione del file in quanto segue:
c:\test2;$(Inherit);c:\mystuff;$(NoInherit)
determinerà l'espansione esattamente come se si trattasse di:
c:\test2;c:\mystuff;$(NoInherit)
Utilizzare con particolare cautela $(NoInherit) nella proprietà Definisci per strumenti quali il compilatore o il linker C/C++. È possibile annullare l'utilizzo delle impostazioni predefinite del progetto (come quelle impostate da Uso di ATL e Uso di MFC).