文章目录
- 预编译 预处理做的事情
- 把#include<>里面的内容执行了
- 注释删除,使用空格替换注释
- define 把符号统统替换为值
- 编译阶段做的事情
- 链接做的事情
- 运行环境
- 预处理(预处理)详解
- 条件编译
- 常见的条件编译指令
- #if #endif
- #if #elif #else #endif
- #ifdef #ifndef #if defined #if !defined
- 嵌套指令
- 文件包含 #include
- 嵌套文件包含 头文件重复包含
- 其它预处理指令
机器指令即二进制指令
编译本身也分为几个阶段
linux展示
gcc是linux下的一个编译器
预编译 预处理做的事情
把#include<>里面的内容执行了
注释删除,使用空格替换注释
define 把符号统统替换为值
编译阶段做的事情
符号汇总,函数名,全局变量
#汇编做的事情
链接做的事情
vim练级攻略 陈皓 库壳
运行环境
预处理(预处理)详解
预定义符号
FILE
代码所在文件的路径+名称
LINE
文件当前的行号
DATE TIME
代码走到这的日期和时间
写日志文件
FUNCTION
打印函数名
#define预处理指令
#define 是在预处理阶段进行处理的所以叫预处理指令
#开头的都是预处理指令
#define定义标识符 反斜杠\ (续行符)
符号可以是整数,字符串等等
这样写for的循环体内容就是 空语句
不要加分号
#define定义宏
写宏的时候不要吝啬括号,宏的参数不是计算好之后传进去,而不是算好之后替换进去
#define替换规则
宏的参数不是计算好之后传进去,而不是算好之后替换进去
#和##
宏的参数不是计算好之后传进去,是彻彻底底替换进去
宏和函数比
undef
命令行定义
条件编译
常见的条件编译指令
#if #endif
#if #elif #else #endif
#ifdef #ifndef #if defined #if !defined
嵌套指令
文件包含 #include
把include的文件内容放过来,把文件的内容复制过来
自己创建的头文件,自定义的头文件
嵌套文件包含 头文件重复包含
test1.h包含了common.h,test2.h包含了common.h
test.h包含了test1.h,test2.h,则test.h包含了common.h两次
解决方法
编译后只被包含一次
解决方法二