C语言-预处理

📅 发布时间:2026/7/6 18:28:23 👁️ 浏览次数:
C语言-预处理
代码编译步骤文本代码翻译为可执行二进制文件步骤预处理预处理阶段会进行去注释、宏替换、头文件展开、条件编译可使用gcc -E将.c文件转为.i文件。编译将C语言翻译为汇编语言。可使用gcc -S将.i文件转为.s文件。汇编将汇编语言转化为机器指令的可重定向目标文件可被链接。可使用gcc -C将.s文件转为.o文件。链接合并多个目标文件将自身程序和库文件进行关联分配最终的内存地址形成可执行文件。预处理宏定义#define源文件的任何位置都可以定义与是否在函数内外无关。宏的作用范围从其定义开始往后都是其有效范围。宏定义也可使用gcc -D由编译器直接为我们定义。#undef用于取消宏预处理时去注释和宏替换哪个先执行#includestdio.h#defineBSC//intmain(){BSCprintf(去注释先执行\n);printf(宏替换先执行\n);return0;}通过gcc -E test.c -o test.o查看test.o发现BSC后的语句保留。故去注释先执行。条件编译条件编译是用于进行代码裁剪的工具。#if判定宏为真或假。ifdef(#if defined())/ifndef(#if !defined())判定宏是/否被定义。在多分支的情况下由上至下匹配匹配到后就结束。#includestdio.h#defineC#defineCPPintmain(){#ifdefCprintf(C\n);#elifdefined(CPP)printf(CPP\n);#endif}预处理后查看.i文件只保留了printf(C\n);头文件#include ()的查找顺序当前目录-命令行参数-I的指定路径-系统默认路径如/usr/include。的查找顺序命令行参数-I的指定路径-系统默认路径。预处理时头文件展开其就是将头文件中的内容拷贝到源文件中。