转自:http://quanminchaoren.iteye.com/blog/1870977

#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

【作者】张昺华
【出处】http://www.cnblogs.com/sky-heaven/
【博客园】 http://www.cnblogs.com/sky-heaven/
【新浪博客】 http://blog.sina.com.cn/u/2049150530
【知乎】 http://www.zhihu.com/people/zhang-bing-hua
【我的作品---旋转倒立摆】 http://v.youku.com/v_show/id_XODM5NDAzNjQw.html?spm=a2hzp.8253869.0.0&from=y1.7-2
【我的作品---自平衡自动循迹车】 http://v.youku.com/v_show/id_XODM5MzYyNTIw.html?spm=a2hzp.8253869.0.0&from=y1.7-2
【新浪微博】 张昺华--sky
【twitter】 @sky2030_
【facebook】 张昺华 zhangbinghua
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.

#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://www.yucoat.com/c_program/difference_if_ifdef_if_defined.html #if的使用说明 #if的后面接的是表达式 #if (MAX== ...

  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. rust编程之道 pdf_LPC: 想在内核里引入Rust,还需要做很多决定
  2. mac下查看tensorboard中的graph
  3. rocketmq4.1.0部署及流量切换实践
  4. Python函数之 ceil, floor,round
  5. [转载] Python numpy函数:all()和any()比较矩阵
  6. 第一课[编辑器设置-VC++6.0]
  7. php package manager,package命令的安装教程
  8. dwz java_dwz.cn接口java客户端实现
  9. 如何写代码,才能越写越轻松?
  10. wordpress在Linux nginx下权限设置
  11. ASP.Net中控件的EnableViewState属性
  12. Anaconda中spyder5闪退如何解决
  13. Flink Table Api 之Over Windows使用
  14. Jetson TX2重要技巧
  15. Android自定义ViewGroup的布局,往往都是从流式布局开始
  16. python 数字转换成汉字,Python实现把数字转换成中文
  17. 游戏里面的3d人物角色模型是怎么样制作的?
  18. mytrader-开源股票期货金融软件+支持C/C++/Python/Excel/VBA/麦语言的量化分析交易平台
  19. SqlServer中 stuff 函数
  20. 2、es索引创建及查询

热门文章

  1. Python----面试题(二)
  2. 每天一个linux命令:【转载】less命令
  3. bootstrapTable表格格式化日期后,IE浏览器显示不正常,为NaN-NaN-NaN
  4. Kerberos认证过程学习理解
  5. hadoop单机环境搭建
  6. Reactor网络编程模型
  7. vue导出Excel(一)
  8. Springboot项目结构浅析
  9. localdatetime 获取天_LocalDateTime的一些用法
  10. 生产者消费者案例java代码