文章目录一标准库1C标准库2拓展C标准库二头文件两类头文件查找规则书写规则三C语言程序完整运行的流程大体框架1预处理2编译3汇编4链接5运行本文只供初学者粗浅了解不适合深入探索。当作者以后有更深入了解后会酌情修改内容。一标准库标准库就像是C/C官方提前写好的一大批“现成工具合集”不需要你自己实现安装编译器时自带标准库包含了函数、算法、对象、容器、输入输出工具等当需要某一类工具时直接引入相关标准头文件就能调用这类工具。标准头文件标准库某一类功能模块的配套声明“说明书”里面记录该模块下所有函数、类型、常量的签名。“工具”的声明都放在标准头文件里。1C标准库头文件带 .h 譬如stdio.h printf、scanf 屏幕输入输出stdlib.h rand随机数、malloc内存分配string.h 字符串拷贝strcpy、求长度strlen2拓展C标准库放在std命名空间内使用时要么选择std::要么使用using namespace std展开命名空间 才可以使用C标准库里面的相关工具。譬如 iostream std::cout、std::cin 控制台读写 string std::string 字符串类型二头文件本质作用存放【声明】的文本文件。两类头文件1系统标准头文件执行预处理指令#include时需要将头文件用括起来。eg. #includestdio.h/ iostream/stdlib.h/stdbool.h/time.h/assert.h2自己写的自定义头文件执行预处理指令#include时需要将头文件用 “括起来#includetest.h” /“Stack.h” /“SeqList.h” /“Queue.h”查找规则#include 先搜当前源文件目录找不到再去系统标准库目录#include 直接跳过本地目录只搜系统库目录。书写规则✅ 允许写函数声明、类/结构体、常量、typedef、命名空间内容、宏❌ C语言中不建议写完整函数实现会多文件重定义报错三C语言程序完整运行的流程大体框架1预处理输入.c源代码文件输出纯文本 .i 预处理文件只有干净代码。在预处理阶段做了#include预处理指令 把头文件文本全部复制粘贴进当前文件头文件展开处理 #define宏替换、 #ifdef 等条件编译3.删除注释、处理行号、过滤多余空格换行。2编译输入预处理后的 .i 文件输出.s 汇编文件人类能看懂的底层指令。编译阶段做的事词法分析拆分关键字、变量、运算符语法/语义分析检查语法错误翻译成汇编代码。3汇编输入 .s 汇编代码输出 .obj Windows/ .o Linux/Mac目标文件。汇编阶段做的事把汇编指令翻译成CPU能识别的二进制机器码生成目标文件。特点只有本机代码但缺少库函数实现。比如 printf 、 rand 只留符号没有实体4链接输入多个 .obj 目标文件 系统标准库 .lib / .so 输出可执行文件 .exe Windows/ a.out Linux链接阶段做的两件核心事符号解析把 printf 、自定义函数、全局变量找到对应的实现代码地址合并整合所有代码、数据段分配统一内存地址。5运行——end——