http://www.yucoat.com/c_program/difference_if_ifdef_if_defined.html

#if的使用说明

#if的后面接的是表达式

#if (MAX==10)||(MAX==20)code...
#endif

它的作用是:如果(MAX==10)||(MAX==20)成立,那么编译器就会把其中的#if 与 #endif之间的代码编译进去(注意:是编译进去,不是执行!!)

#if defined的使用

#if后面接的是一个宏。

#if defined (x)...code...
#endif

这个#if defined它不管里面的“x”的逻辑是“真”还是“假”它只管这个程序的前面的宏定义里面有没有定义“x”这个宏,如果定义了x这个宏,那么,编译器会编译中间的…code…否则不直接忽视中间的…code…代码。

另外 #if defined(x)也可以取反,也就用 #if !defined(x)

#ifdef的使用

#ifdef的使用和#if defined()的用法一致
#ifndef又和#if !defined()的用法一致。

最后强调两点:
第一:这几个宏定义只是决定代码块是否被编译!
第二:别忘了#endif

#if、#ifdef、#if defined之间的区别相关推荐

  1. 【C基础】#if、if、#ifdef、#if defined之间的区别

    #if vs. if 条件编译是C语言中预处理部分的内容,它是编译器编译代码时最先处理的部分, 条件编译里面有判断语句,比如 #if .#else .#elif 及 #endif 它的意思是如果宏条件 ...

  2. #if、#ifdef、#if defined之间的区别【转】

    转自:http://quanminchaoren.iteye.com/blog/1870977 #if的使用说明 #if的后面接的是表达式 #if (MAX==10)||(MAX==20)code.. ...

  3. 定义指令时“控制器”,“链接”和“编译”函数之间的区别

    本文翻译自:Difference between the 'controller', 'link' and 'compile' functions when defining a directive ...

  4. mysql 迭代更新_MySQL、MongoDB、Redis 数据库之间的区别与使用(本章迭代更新)

    MySQL.MongoDB.Redis 数据库之间的区别与使用 MySQL.MongoDB.Redis 数据库之间的区别与使用(本章迭代更新) update:2019年2月20日 15:21:19(本 ...

  5. javascript和var之间的区别?

    You can define your variables in JavaScript using two keywords - the let keyword and the var keyword ...

  6. 微内核和宏内核的区别_8086微处理器中的过程和宏之间的区别

    微内核和宏内核的区别 Prerequisite 先决条件 Procedure in 8086 Microprocessor 8086微处理器中的过程 Macros in 8086 Microproce ...

  7. Python中abs()和fabs()方法之间的区别

    In python, abs() method and fabs() method both are used to find the absolute value of a number. They ...

  8. 集中和分散架构之间的区别_分散式应用程序架构:后端,安全性和设计模式

    集中和分散架构之间的区别 Decentralized applications, or ÐApps, require a special system design to achieve high s ...

  9. python3.0与2.x之间的区别

    python3.0与2.x之间的区别: 1.性能 Py3.0运行pystone benchmark的速度比Py2.5慢30%.Guido认为Py3.0有极大的优化空间,在字符串和整形操作上可以取得很好 ...

最新文章

  1. 20 个 jQuery 超酷视觉效果构建教程推荐
  2. 【TCP/IP】一张图带你读懂TCP/IP协议
  3. 通过style来控制隔行显示不同颜色 .
  4. HDU 1879(最小生成树问题,Prim)
  5. c# 5.0入门经典笔记
  6. leetcode 5077. 按列翻转得到最大值等行数(Flip Columns For Maximum Number of Equal Rows)
  7. 时间序列的截尾和拖尾_R语言:时间序列(一)
  8. python逐行读取txt写入excel_用python从符合一定格式的txt文档中逐行读取数据并按一定规则写入excel(openpyxl支持Excel 2007 .xlsx格式)...
  9. Alibaba之MySQL宝典_阿里巴巴内部 MySQL宝典 意外流出!极致经典,堪称数据库的天花板...
  10. 面向大数据处理的数据流编程模型和工具综述
  11. MySQL条件判断函数使用
  12. 多域名linux面板,宝塔面板操作多个域名做301跳转
  13. 引领全球增长的60大技术:机会、增长、投资、洞察
  14. Redis - 数据持久化
  15. 初、中、高级Java工程师有哪些区别?
  16. JSP教程第3讲笔记
  17. iOS视频裁剪、拼接、添加水印、添加背景音乐
  18. 基于python的异方差检验_【Python】统计科学之讲讲异方差的检验
  19. 5大国外广告联盟赚美金项目,诱人的美金在向你招手!
  20. 黑鲨helo支持html吗,黑鲨游戏手机Helo发布 张大仙公布私人配置

热门文章

  1. 在线JSON转CSV格式文件工具
  2. ruby 批量下载王者荣耀皮肤
  3. openssl内存分配,查看内存泄露
  4. Haproxy反向代理WebSocket的方法
  5. 淘宝电影“追杀”猫眼电影,同门相争不可避免
  6. win764bit下Eclipse连接ubuntu中hadoop2.6经验总结
  7. 华为承诺的鸿蒙系统兑现没有,华为鸿蒙系统遭截胡,安卓12系统率先出手
  8. html中el表达式遍历list,使用EL表达式访问集合
  9. 如何java面试_短时间如何过java面试?
  10. c语言按键实现跳转程序,C语言中的跳转语句