编译流程

笔记索引

编译一般可以分为三个阶段:

预处理 Preprocessing

执行预处理语句(#define 等)

编译和汇编 Compilation & assembly

经过两步将预处理器产生的代码编译成目标文件(object file):

  1. 代码编译成底层汇编代码。在这一步中,编译器会对代码进行检查优化,指出各种错误

  2. 汇编器将上一步生成的汇编代码逐行转换成字节码(也就是机器码)

链接 Linking

链接器利用编译器产生的目标文件,生成最终结果

在这一阶段,编译器将把上一阶段中编译器产生的各种目标文件链接起来形成一整个链接库或者可执行文件

数据类型

笔记索引

“定义”、“声明”、“赋值”与”初始化“

  • declaration

    声明:说明了变量的名字和类型,但并不分配存储空间

  • definition

    定义:说明了变量的名字和类型,为它分配了存储空间,但并不一定要填充初始值

  • initialization

    初始化:是一种仅对全局变量(全局变量指所有函数外部)、静态变量进行的特殊的定义,若不指定初始值,则自动填充0的隐式转换;由于不对局部变量进行,局部变量内定义后,若不赋值,则会留有垃圾值

  • assignment

    赋值:将某一个数值赋给一个变量的过程,赋值只针对于已定义的变量,可以多次进行。

阅读全文 »

实体(Entity)

客观存在并可相互区别的事物称为实体。

可以是具体的人、事、物或抽象的概念。

属性(Attribute)

实体所具有的某一特性称为属性。

一个实体可以由若干个属性来刻画。

实体型(Entity Type)

用实体名及其属性名集合来抽象和刻画同类实体称为实体型

实体集(Entity Set)

同一类型实体的集合称为实体集

基数

表示 1 个(被标记)实体对另一个实体 0…N

回到笔记目录

基本概念 手册链接

注意事项

  • 改变历史是罪恶的!
  • checkout 的时代应该过去了,对吧?
  • git 真的 适合纯文本,除非使用大文件管理工具
  • 不要滥用stash,看看《多工作树》吧!
  • 第一个 commit 只含 README 会比较有利于善后
  • git mv 重命名会方便一些?

常见操作

  • -n 预演,不真正添加;所有命令几乎都可以预演
  • git 命令行使用 -- 来分隔命令部分和路径部分

常用名词

  • commit:“版本”,记录了文件的变动
  • 存储区:
    • 工作树 worktree: 用户编辑代码的地方,产生文件改动
    • 暂存区 indexstaged): 工作树文件改动记录的集散地
    • 本地版本库 local repository: 将暂存区存放为 commit 的地方
    • 上游版本库 upstream repository: 与本地版本库相同,只不过放在远端
    • 存档库 stash: 紧急时暂时存放改动的堆栈
阅读全文 »
0%