WHCSRL 技术网

OC/C++ 学习记录随笔

编译步骤:

hello.c -> 预编译 -> hello.i -> 编译 -> hello.s -> 汇编 -> hello.o -> 链接 -> 可执行文件

  1. 预编译会对 预编译伪指令(一般以 # 打头,且前面只能出现空白字符)进行处理后 生成中间文件作为编译器的输入。

    • #include (头文件的所有内容都会最终合并到某一个或几个源文件中,将所有头文件递归展开后形成的源文件叫做编译单元)
    • #define (一般是用对应文本替换)#define 只是简单替换,不做语法检查。(检查留个编译器进行)
    • #ifdef
    • #pragma
    • 构串操作符(# ##), #(变量 生成 字符串), ##(字符串生成变量)
    • __LINE__ __FILE__
    • 删除所有注释
  2. 分别对最小编译单元进行编译(以单个头文件所递归包含的所有文件)

  • 语法分析:
  • 语义分析:
  • 中间代码生成
  1. 汇编:待写入
  2. 链接:对各个编译单元进行整合,并且链接动态库
  • 用户程序调用库(头文件和二进制库组成的库中)接口。连接器会从库中提取相应代码,并和用户程序连接生成可执行文件或动态连接库文件。

运行时: 待写入

长表达式拆分需要在低优先级处拆分为多行,运算符放在新行之首(以示凸出)

  if (aaaaaaa > bbbbbbbbbbbb)
  && (ccccccccc > ddddddddd)
  && (eeeeeeeee > fffffffff)
{
  pass
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

推荐 以行为为中心 的版式(ADT/UDT)即将public成员写在前面

不推荐 以数据为中心 的版式, 即将private 写在前面

c++ 对 c的最根本改变就是把函数放到了结构当中,从而产生了C++类

动态特性 VS 静态特性

  • 静态特性: 程序在编译期就能确定下来的就能确定
  • 动态特性: 不是静态特性
  • 动态特性是面向对象语言最强大的功能之一, 因为支持可扩展性, 而可扩展性是程序最重要的目标之一。

动态特性:

  • C++:C++虚函数(多态确定调用