1、C++编译流程
以Unix系统编译中间文件为说明:
.cpp—(编译预处理)—>.ii—(编译)—>.s—(汇编)—>.o—(ld,连接)—>.out
2、#include
作用于编译预处理阶段,将被include文件抄送在include所在位置,并会在相应位置写出调用栈,生成中间文件.ii,该中间文件可读
include文件加引号表示先从当前目录寻找索引,加尖括号表示从编译器指定根目录索引,Unix默认为"~//usr/include"目录
3、定义、声明、头文件
.h头文件中只应存放三种代码:
函数声明:没有大括号,形如void fun()
变量声明:extern 变量名
class、结构体定义
声明只是提示编译器,存在这个东西,并没有定义出实体,不定义直接调用会报错。
4、标准头文件结构
#ifndef HEADER_FLAG
#define HEADER_FLAG
/*头文件*/
#endif
这是为了防止多次include同一个头文件时,每次都抄送到预编译文件中,造成文件过大、循环导入或者结构体定义重复以致报错(声明重复问题不大)。