C语言简明讲解预编译的使用

2022-05-06 15:22:13
目录
小复习
1、内置符号
2、自定义符号
3、自定义宏
4、条件编译

小复习

预处理,预编译是编译的第一步。

会有三件基本的事情发生:

引入#include
去除注释
修改#define

1、内置符号

这些符号都可以直接使用:

__FILE__  >__LINE__            当前行号
__DATE__            编译日期
__TIME__            编译时间

举例:

#include<stdio.h> int main() { printf("文件全名:%sn", __FILE__); printf("当前运行行号:%dn", __LINE__); printf("编译日期:%sn", __DATE__); printf("编译时间:%sn", __TIME__); return 0; }

效果:

在这里插入图片描述

2、自定义符号

#define>

不带分号。预编译阶段,所有名字会被值替换。

举例:给printf取个别名。

#include<stdio.h> #define say printf int main() { say("你好,世界!n"); return 0; }

效果:

在这里插入图片描述

举例:自定义一个死循环符号。

#include<stdio.h> #define loop while(1) int main() { int i = 0; loop{ if (i > 1000) { break; } else { printf("你好,世界!t%dn",i); i++; } } return 0; }

效果:

在这里插入图片描述

3、自定义宏

和自定义符合差不多。

相当于函数,只不过在预编译www.easck.com的阶段就会执行。

然后替换掉。

#define>

举例:输出字符串。

#include<stdio.h> #define say(s)printf(s) int main() { say("你好,世界!n"); return 0; }

效果:

在这里插入图片描述

替换逻辑:递归。

看参数有没有define,有就套娃。

直到没有,替换自己。

字符串内部的符号会被忽略。

4、条件编译

可以用#define定义一个符号,代表是否要执行。

#include<stdio.h> #define>效果:

在这里插入图片描述

同时,可以让这段代码直接跳过编译。

#include<stdio.h> #define __DEBUG__ 1 int main() { #if __DEBUG__ printf("调试模式开启n"); #endif return 0; }

这种写法也有配套的选择分支。

#include<stdio.h> #define __DEBUG__ 0 xiDUR#define __WARN__ 1 int main() { #if __DEBUG__ printf("调试模式n"); #elif __WARN__ printf("警告模式n"); #elxiDURse printf("正常模式n"); #endif return 0; }

效果:

在这里插入图片描述

到此这篇关于C语言简明讲解预编译的使用的文章就介绍到这了,更多相关C语言预编译内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!