更新:2007 年 11 月
本主题给出一些示例,讲述如何使用 $(Inherit) 和 $(NoInherit) 宏。
- 在项目级设置下列附加包含路径 (/I): - c:\test
- 对于特定文件,设置下列附加包含路径: - c:\test2;c:\mystuff
- 查看文件的“命令行”属性页。它包括: - /I"c:\test2" /I"c:\mystuff" /I"c:\test"- 这是因为,如果没有将 $(Inherit) 显式地置于列表中,在文件配置的附加包含路径的末尾就会有一个隐式的 $(Inherit)。 
- 然而,如果将文件配置的附加包含路径更改为: - c:\test2;$(Inherit);c:\mystuff- 在文件的“命令行”属性页上,它将扩展到以下内容: - /I"c:\test2" /I"c:\test" /I"c:\mystuff"- 请注意,项目配置的附加包含路径是放置 $(Inherit) 宏的位置。$(Inherit) 宏用于指示作为该属性一部分的继承的值的位置。它可以放在该列表的任何位置。 
- 如果将文件配置的附加包含路径做如下更改: - $(Inherit);c:\test2;$(Inherit);c:\mystuff- 在文件的“命令行”属性页上,它将扩展到以下内容: - /I"c:\test" /I"c:\test2" /I"c:\test" /I"c:\mystuff"
- 如果将文件配置的附加包含路径做如下更改: - c:\test2;c:\mystuff;$(NoInherit)- 在文件的“命令行”属性页上,它将扩展到以下内容: - /I"c:\test2" /I"c:\mystuff"- 请注意,项目配置的 /I"c:\test" 已不存在了。$(NoInherit) 宏的位置与它的使用方法无关,不像 $(Inherit),它与位置有关。 
$(NoInherit) 优先于 $(Inherit)。如果存在 $(NoInherit),将忽略 $(Inherit)。例如,如果将文件配置的附加包含路径做如下更改:
c:\test2;$(Inherit);c:\mystuff;$(NoInherit)
这会扩展它,与它是如下包含路径的情况完全相同:
c:\test2;c:\mystuff;$(NoInherit)
在某些工具(如 C/C++ 编译器或链接器)的**“定义”**属性中请慎用 $(NoInherit);可以取消使用项目默认设置(如“ATL 的使用”和“MFC 的使用”设置的值)。