我们在学习C语言的过程中一般遇到的两种预定义的语句:一种是带参数的预定义,也就是我们所说的常函数,比如说#define ADD(x, y) x+y;一种是不带参数的预定义,也就是预定义变量,例如#define PI 3.1415926。

那么这种形式你是否见过:                                                                                                            #define DEBUG
你没看错,就是这样,替换列表怎么不见了?怎么和我平时见到的预定义语句不一样呢?

虽然这样的写法单看很奇怪,但却是合法的。

我们来结合#ifdef来看,就不觉得奇怪了。

#ifndef NVM
#define NVM
#define NVM_PARAMETER 1#endif

这段代码的意思是:检测程序是否已经预定义了NVM,如果已经定义,那么就不再执行#ifndef中的语句,如果没有定义,定义没有替换列表的NVM常量,并定义NVM_PARAMETER,之后结束。

那么到这里大家可能已经明白了,没有替换列表的宏定义其实单独拿出来没有意义,但可以用来控制语句的执行,这样可以避免重复执行某些预定义的语句,提高程序运行的效率。

所以再遇到没有替换参数得到宏定义的时候,要和条件判断语句结合着来看哦。

这个知识点是博主在工作时遇到的小知识点,由于网上不容易查到资料,我就详细整理了一下,能帮到大家就更好了,如果哪里说的有错,希望各位批评指正!谢谢!

C语言知识点--define的替换列表为空是怎么回事?相关推荐

  1. C语言中函数的参数列表为空和void的区别

    C标准和C++标准在main函数上是有区别的,所以我分别详细来介绍他们. 对于C语言: C89标准的main()函数是可接受的,尽管现在建议是使用C99的标准.C99标准只定义了如下两种可接受的函数原 ...

  2. STM32中C语言知识点:初学者必看,老鸟复习(长文总结)

    说在前面的话 一位初学单片机的小伙伴让我推荐C语言书籍,因为C语言基础比较差,想把C语言重新学一遍,再去学单片机,我以前刚学单片机的时候也有这样子的想法. 其实C语言是可以边学单片机边学的,学单片机的 ...

  3. c语言static知识点,C语言知识点集锦

    C语言知识点集锦 C语言作为一门非常适合编程入门的语言,打好基础的重要性不言而喻.下面整理了一些C语言知识点,希望对大家有所帮助! 知识点1:指针使用注意 Int *p只能指向int类型的数据 指针变 ...

  4. 嵌入式开发中的C语言知识点

    嵌入式开发中的C语言知识点 1.关键字 2.数据类型 3.内存管理和存储架构 4.指针和数组 5.结构类型和对齐 6.预处理机制 1.关键字 几乎每一门语言中都有关键字,具有特殊功能,C语言也不例外, ...

  5. 嵌入式C语言知识点总结

    怎么做好嵌入式?相信这个问题无论问谁你都会得到一句学好C语言!今天推荐一篇大佬写的嵌入式C语言知识点总结,非常值得一读. 从语法上来说C语言并不复杂, 但编写优质可靠的嵌入式C程序并非易事,不仅需要熟 ...

  6. c语言理解参数,c语言中对可变参数列表的简单理解

    函数原型中一般情况下参数的数目是固定的,但是如果想在不同的时候接收不定数目的参数时该怎么办呢?c语言提供了可变参数列表来实现. 可变参数列表是通过宏来实现的,这些宏定义在stdarg.h的头文件中.头 ...

  7. C语言数字3转变字符 3 程序,大学c语言知识点总结

    大学c语言知识点总结 C语言的设计目标是提供一种能以简易的方式编译.处理低级存储器.产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言.一起来看看大学c语言知识点总结吧! 大学c语言知识点总 ...

  8. 二级考试c语言中 星号与字母 题型总结,2017年计算机二级考试C语言知识点归纳...

    2017年计算机二级考试C语言知识点归纳 计算机二级考试是全国计算机等级考试(National Computer Rank Examination,简称NCRE)四个等级中的一个等级,考核计算机基础知 ...

  9. c语言中字符占用的存储单元,C语言知识点第1章.doc

    C语言知识点第1章 C语言知识点总结(二) 第八节 字符字符常量定义:一对单引号括起来的一个字符.如'A'.'a'.'9'相应字符对应的ASCII编码值(见附录四)字符常量占用一个字节的存储单元(一个 ...

  10. Swift语言中的#ifdef替换

    本文翻译自:#ifdef replacement in the Swift language In C/C++/Objective-C you can define a macro using com ...

最新文章

  1. 基于r-Kernel的LiteOS操作系统
  2. 轻松易懂的缓存雪崩、穿透、击穿以及解决方案
  3. 如何使用canvas绘图
  4. 办公室计算机网络使用情况,企事业单位办公网络的现状及解决方案.doc
  5. 年买笔记本的8个小技巧 最适合自己才最好(组图)
  6. Spring Data MongoDB示例
  7. 腾讯招视频内容理解算法研究员/高级研究员30W-60W
  8. bootstrap中如何使input中的小图标获得点击事件
  9. 使用天地图api访问本地wms
  10. EXCEL图表技巧:选择合适图表最全指南,建议收藏
  11. python字体描边_使用 python 将文泉驿字体导出为 fnt 格式的bitmap font
  12. 成功爬虫下载抖音用户视频(无水印)
  13. Lambert漫反射模型
  14. codeforces 1324 D. Pair of Topics(思维)
  15. 【基于MapReduce的成绩分析系统】——计算每门课程的平均成绩、最高成绩、最低成绩
  16. 赛门铁克扩展验证EV SSL证书
  17. C++实现双人中国象棋(一)——算法篇(附完整代码)
  18. ██最牛的抠图软件诞生了██_摄影作品
  19. 国内Android应用推广的六大主流方式
  20. 基于MATLAB人眼开度的疲劳识别

热门文章

  1. ASEMI低压降肖特基二极管怎么检测,低压降肖特基有什么优势
  2. 推荐算法DCN(Deep Cross)自动构造高阶交叉特征原理介绍
  3. secondary namenode详解
  4. selenium 使用带密码的socks5代理方法
  5. Linux和Windows中下载FFmpeg
  6. 科普:互联网的岗位职责和技能
  7. Excel 数据透视表教程大全之 07 数据透视表使用日期字段自动按月、年对销售数据进行分组(教程含数据)
  8. golang interface 与 反射
  9. Debian vmtools安装后 不能复制粘贴文件
  10. 机动车污染排放检验信息系统信息化建设目标及规范