编译器遇到#include <Zydis/Defines.h>时会在哪些路径查找?
Visual Studio中编译器查找第三方头文件的逻辑
对于像#include <Zydis/Defines.h>这类Visual Studio未预装的第三方头文件,编译器的查找逻辑和标准头文件本质一致,只是第三方头文件不在默认路径中,具体流程如下:
- 首先遍历Visual Studio自带的标准库头文件路径(比如VS安装目录下的
VC\Tools\MSVC\<版本号>\include这类目录),但第三方头文件肯定不在这些路径里,所以这一步会直接跳过。 - 接下来会遍历你在项目属性中手动配置的附加包含目录:
- 配置路径的入口是:右键项目 → 属性 → 配置属性 → C/C++ → 常规 → 附加包含目录。
- 比如你把Zydis库的头文件根目录(假设是
D:\libs\Zydis\include)添加到这里,编译器就会自动在D:\libs\Zydis\include\Zydis目录下查找Defines.h。
- 如果没配置对应的附加包含目录,编译器会直接抛出“无法打开源文件Zydis/Defines.h”的编译错误。
额外补充:如果是用双引号#include "Zydis/Defines.h",编译器会先查找当前源文件所在的目录,再走上面的查找流程,但你问的是尖括号的情况,核心还是依赖附加包含目录的配置。
内容的提问来源于stack exchange,提问作者Jkf1298
相关产品推荐
相关产品推荐

