资讯详情

从cpp到exe的简单历程

预处理

编译器将在编译前进行处理pre-process(预处理句)。常见的预处理句#include,#if,#define,#endif。预处理句子的功能非常简单。

#include 找到后面的文件,找到文件的内容copy进来 #if 和 #endif 判断句子简单 #define A B 将cpp文件中的B都被替换A 

编译

.cpp文件的后缀名告诉编译器这是C 文件,用C 编译规则。

补充 translate unit:编译器将.cpp文件编译成.obj文件,此时.cpp文件称为translate unit,因为.cpp文件里可能include其他cpp文件,所以translate unit不一定只有一个.cpp文件

编译器完成预处理后,cpp文件将被编译器编译成机器代码文件.obj文件,.obj文件中有一堆字母数字,.obj文件无法运行。

链接

build在项目中,一切obj连接文件,形成可操作性.exe文件obj成功链接文件,cpp如果文件中引用了其他文件cpp文件的方法,需要声明。

如果没有声明,编译就会出错;如果声明的方法不存在,链接就会出错

补充 以下链接错误可能现错误

  • 方法的声明和定义不同
  • 如果某种方法只在自己身上,cpp文件起作用,static修饰
  • 可能有多个项目cpp同样的文件调用.h文件,由于include链接错误有三种解决方案
  • 1.将.h文件中的方法用static修饰;
  • 2.将.h使用文件中的方法inline修改意味着只使用方法的方法;
  • 3.只在头文件中留下方法声明,将方法的定义放在使用头文件的其中一个中cpp文件中

标签: acpp060310kbe电阻

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

 锐单商城 - 一站式电子元器件采购平台  

 深圳锐单电子有限公司