【编程语法-C++】课堂总结01-07

这几节课主要是学习了解c++语言和其他语言的不同点,以及基本特性。

不同点

c++语言和c#、java虽然都是面向对象的语言,但对于complier是完全不一样的作用方式。

模式

debug模式:禁用优化,会慢一些,但生成更多的信息
release模式:启用优化,会过滤无用操作

preprocessor statement

#include 做的就是将文件复制到另一个文件
#if 1
#endif 做的就是通过条件将中间的代码是否进行编译
#define 定义任意一个symbol,在编译过程替换

error list

  • C开头的是编译错误
  • LNK开头的是链接错误

声明和定义

  • 每个cpp编译的时候都需要知道文件里的symbol代表什么
  • 编译过程只要有声明就不会报错,但在build过程linker会寻找声明的函数主体,也就是定义
  • 寻找的过程根据函数名称,参数,返回类型来寻找,若有好几个就会发生重载问题
  • 解决重载有几个方法:static函数,让函数只能对当前cpp可见,也就是说不会被链接到其他cpp;另一种方式就是

compling

enter point -> main function
c++是可以直接转化为机器码/二进制文件让硬件进行执行。
整个过程可以分为:
compile: 编译cpp(translation unit)生成obj

cpp文件可能会相互调用(一个translation unit不一定等于一个cpp)

更细致的分为:

  • 处理preprocessor statement
  • 编译器将代码转化为constant data(常数数据)、instructions(指令)
  • 编译器产生抽象语法树产生机器码obj文件,可以选择asm来看汇编语言
全部评论

相关推荐

吴offer选手:学到了,下次面试也放张纸在电脑上,不然老是忘记要说哪几个点
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务