前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >c++ 函数模板

c++ 函数模板

原创
作者头像
ruochen
修改2021-05-21 11:06:52
4750
修改2021-05-21 11:06:52
举报

c++ obj文件

  • obj文件就是目标文件,是源程序经过编译程序编译后生成的
  • 不能直接执行,需要连接程序连接后才能生成可执行文件,这样就能执行
  • 一般由机器代码组成,但也可以是自己定义的一些伪指令代码(需有专门的解释程序对其进行解释执行)

连接程序

  • 把目标代码和它所使用的库文件连接的程序

obj文件与exe文件的区别

  • 编译:当前源代码编译成二进制目标文件(obj文件)
  • 链接(link): 将生成的.obj文件与库文件.lib等文件链接,生成可执行文件(.exe文件)
  • project中每个cpp经编译成为obj(object)文件,所有obj文件和资源问价经连接(link)成为可执行文件,obj文件可称为目标文件或中间文件。obj文件只给出了程序的相对地址,而exe是绝对地址

现代编译器的主要工作流程

代码语言:txt
复制
源程序(source code)→ 预处理器(preprocessor)→ 编译器(compiler)→ 汇编程序(assembler)→ 目标程序(object code)→ 连接器(链接器,Linker)→ 可执行程序(executables)

函数模板的声明和实现

  • 函数模板的声明和实现一般都放在.h文件中
  • 模板是在需要的时候,才会去生成一个具体的实例化。模板本身是不会被执行的(模板本身不产生汇编指令),是模板生成的具体实例化才产生指令

模板的实现为什么放在.h中

  • 编译器一次只能处理一个单元,即一次处理一个cpp文件,实例化时需要看到该模块的完整定义,若头文件中只有声明,没有定义,编译器就无法实例化该模块,最终会导致链接(link)错误,所以放在头文件中
  • 若你坚持不想放在.h中,试试include "xxx.cpp"这种奇葩的做法也是可以的

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • c++ obj文件
    • 连接程序
      • obj文件与exe文件的区别
        • 现代编译器的主要工作流程
        • 函数模板的声明和实现
          • 模板的实现为什么放在.h中
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档