当前位置: 首页 > news >正文

预处理 讲解

一.预定义符号

提前定义好的,可以直接使用的符号!(这让我想到了库函数是什么?库函数就是提前定义好的,可随时使用的函数)

  • _ _FILE_ _   //进行编译的原文件
  • _ _LINE_ _   //文件当前的行号
  • _ _DATE_ _  //文件被编译的日期
  • _ _TIME_ _   //文件被编译的时间
  • _ _STDC_ _  //如果编译器遵循ANSIC,则值为1,否则未定义

二.#define定义常量/符号

#define MAX 100  //后面出现MAX的地方都会被替换成100

#define forever for( ; ; ) //这个会陷入死循环,因为for循环少了判断部分,会死循环

#define CASE break;case  //在写case语句的时候自动把break写上

举例说明:

问题:#define定义标识符的时候,要不要加上分号 ; 呢?

不需要,有点多余,因为替换过去可能也会带上分号一起

三.#define定义宏

宏与常量的区别在于 宏是有参数的

#define name(参数部分) stuff

简单来说: #define   宏名称(宏参数)    宏内容

注意!这里的name和参数部分之间不能有空格!!如果有空格,那就会被当成是#define 定义的常量了,name被当成常量/符号,参数部分被当成常量内容/符号内容

举例说明:

重点!宏的参数是不会计算,是会直接替换进去的!!

举例说明:

结果并不是我们想要的6*6=36  而是5+1*5+1 =11

解决办法:加括号

宏在书写的时候,不要吝啬括号!!!

四.带有副作用的宏参数

先自己思考一下下面的代码,得出结果:

#include<stdio.h>
#define MAX(x,y) ((x)>(y)?(x):(y))int main()
{int a = 3;int b = 5;int m = MAX(a++, b++);printf("%d\n", m);printf("%d\n", a);printf("%d\n", b);return 0;
}

解析:

五. #运算符

六.命名约定

建议:宏名大写,函数名不要大写

七.#undef 移除一个命令

八.预处理指令

举例:#include   #define  .........

http://www.dtcms.com/a/407770.html

相关文章:

  • Redis持久化:RDB和AOF
  • 盛泽做网站的怎么做自己下单的网站
  • Java 大视界 -- Java 大数据在智能公交调度优化与准点率提升中的应用实践(416)
  • dw做网站字体 别人电脑显示怎么用phpcmf做网站
  • 如何用ad做网站免费游戏大全
  • 简简单单搭建一个oss服务
  • 做网站简单需要什么网页美工设计的要点分别是什么
  • SQL SERVER 查看锁表
  • 网站链接视频怎么做兴县做网站的公司
  • 专业的网站制作公司哪家好北京网站制作公司兴田德润在那里
  • 【通信】LNA释义
  • html网页设计 静态网页模板 前端html页面模板
  • 前端路由原理及特点
  • 手机里面的网站怎么制作巢湖网 网站
  • 人员徘徊检测的智能视觉分析技术与应用
  • 第三十五天:移除元素
  • 上海网站怎么备案网站开发 注意事项
  • mysql字符串截取,如何在MySQL备份文件中安全截取敏感字符串?
  • RAG技术与应用—基础
  • 英语学习-Saints018
  • 阿里巴巴上面可以做网站wordpress淘客采集
  • 深度学习入门:从神经网络基础到模型训练优化
  • 衡水做网站建设还有那个网站可以做兼职呢
  • 机器人控制:SDO和PDO在实际应用中如何配置和使用?
  • 免费做网站公司内容营销的形式有哪些
  • 【杀鸡焉用牛刀?】基于模板匹配的极简OCR实现
  • 合肥网站建设培训班wordpress采集规则
  • Spring Cloud Gateway 环境属性修改漏洞复现 (CVE-2025-41243)
  • 自然语言编程如何重塑软件开发教育?新人学习路径的辩证思考
  • 金华网站建设公司哪个好12389举报网站建设项目