C语言简明讲解预编译的使用
目录
- 小复习
- 1、内置符号
- 2、自定义符号
- 3、自定义宏
- 4、条件编译
小复习 预处理,预编译是编译的第一步。
会有三件基本的事情发生:
- 引入#include
- 去除注释
- 修改#define
1、内置符号 这些符号都可以直接使用:
__FILE__点c文件全名举例:
__LINE__当前行号
__DATE__编译日期
__TIME__编译时间
#includeint main() { printf("文件全名:%s\n", __FILE__); printf("当前运行行号:%d\n", __LINE__); printf("编译日期:%s\n", __DATE__); printf("编译时间:%s\n", __TIME__); return 0; }
效果:
文章图片
2、自定义符号
#define 名 值不带分号。预编译阶段,所有名字会被值替换。
举例:给printf取个别名。
#include#define say printfint main() { say("你好,世界!\n"); return 0; }
效果:
文章图片
举例:自定义一个死循环符号。
#include#define loop while(1)int main() { int i = 0; loop{if (i > 1000) {break; }else {printf("你好,世界!\t%d\n",i); i++; } } return 0; }
效果:
文章图片
3、自定义宏 和自定义符合差不多。
相当于函数,只不过在预编译的阶段就会执行。
然后替换掉。
#define 名 ( 参数列表 ) 表达式举例:输出字符串。
#include#define say(s)printf(s)int main() { say("你好,世界!\n"); return 0; }
效果:
文章图片
替换逻辑:递归。
看参数有没有define,有就套娃。
直到没有,替换自己。
字符串内部的符号会被忽略。
4、条件编译 【C语言简明讲解预编译的使用】可以用#define定义一个符号,代表是否要执行。
#include#define __DEBUG__ 1int main() { if (__DEBUG__) {printf("调试模式开启\n"); } else {printf("调试模式关闭\n"); } return 0; }
效果:
文章图片
同时,可以让这段代码直接跳过编译。
#include#define __DEBUG__ 1int main() {#if __DEBUG__ printf("调试模式开启\n"); #endif return 0; }
这种写法也有配套的选择分支。
#include#define __DEBUG__ 0#define __WARN__ 1int main() {#if __DEBUG__ printf("调试模式\n"); #elif __WARN__ printf("警告模式\n"); #else printf("正常模式\n"); #endif return 0; }
效果:
文章图片
到此这篇关于C语言简明讲解预编译的使用的文章就介绍到这了,更多相关C语言预编译内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
推荐阅读
- 数据结构(c语言实现)|<数据结构>还不会写单向链表(我手把手教你)
- 数据结构(c语言实现)|<数据结构>刷题笔记——链表篇(一)(有动图详解)
- 手撕常用排序算法|希尔排序——C语言实现
- 数据结构|C语言实现插入排序——希尔排序算法
- 经典排序——希尔排序——C语言版
- Android开发 retrofit入门讲解
- Android XListView实现原理讲解及分析
- go|GO 语言爱好者的最佳Web框架
- Golang(go语言)开发环境配置
- Phalcon查询语言(PHQL)