VS中引用目录、包含目录和库目录的区别和联系

VS中引用目录、包含目录和库目录的区别和联系

目录类型包含文件方式编译依赖性文件类型典型用途
引用目录#include " "直接依赖,修改需要重新编译头文件(.h)自己开发频繁变化的头文件
包含目录#include < >间接依赖,修改只需重链接不需重新编译头文件(.h)Third Party相对稳定的头文件
库目录-间接依赖,修改只需重新链接不需重新编译库文件(.lib .dll)封装公用函数库的库文件

可以看出:

  1. 引用目录直接被编译器搜索和编译,对修改高度敏感,包含目录和库目录较为稳定。
  2. 引用目录使用#include " " 方式包含, 包含目录使用#include < >方式包含。
  3. 修改引用目录需要重新编译,包含目录和库目录只需重新链接。
  4. 引用目录适用于开发者自己频繁变动的头文件,包含目录和库目录适用于第三方相对固定的头文件和库。
  5. 库目录存储真正的库文件(.lib, .dll等),包含目录和引用目录只存储头文件。
    综上,理解这三种目录的区别对代码组织和提高编译效率是很有帮助的。恰当使用可以达到减少不必要重新编译和提高代码重用的目的。

例子说明

这里用一个示例项目来说明引用目录、包含目录和库目录的区别和联系。
项目结构:

|- include/         // 包含目录 
   |- thirdparty/   // 第三方头文件
       |- liba.h
       |- libb.h
   |- myheader.h    
|- ref/              // 引用目录
   |- header1.h
   |- header2.h
|- src/
   |- main.cpp
|- lib/               // 库目录
   |- liba.lib
   |- libb.lib

main.cpp内容:

#include "ref/header1.h"  // 引用目录
#include <include/myheader.h>  // 包含目录
#include <include/thirdparty/liba.h> // 包含目录

int main() {
    func1();  // 来自header1.h
    func2();  // 来自myheader.h 
    liba_func(); // 来自liba.h
}

编译过程:

  1. 编译器首先搜索引用目录ref,直接包含header1.h。
  2. 编译器搜索包含目录include,发现myheader.h,包含进来。
  3. 编译器继续搜索include目录,找到第三方目录thirdparty,并包含liba.h。
  4. 链接过程会链接库目录lib中的liba.lib库。
  5. 修改ref目录的header1.h需要重新编译,修改include目录只需重链接,修改lib目录也只需重链接。
    总结:
  6. 引用目录直接包含自己频繁变化的头文件,包含目录包含thirdparty稳定的头文件。
  7. 修改引用目录需要重新编译,包含目录和库目录只需重链接。
  8. 库目录包含实际的库文件,供链接使用。
  9. 三者directories工作联系,实现程序的构建。
    理解三者的这个示例,可以加深对各自作用和区别的理解。恰当使用可以构建高效可重用的项目,这是C/C++开发者必备的技能之一。
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值