#ifdef和#if defined的区别

#ifdef和#if defined的区别

#ifdef和#if defined他们都可以用来判断单个宏是否被定义,所以常常在这种情况,我常常使用#ifdef。也因为如此,导致我忽略了#if defined的存在。

凡事总有例外,当我在移植429总线的时候,我看到了以下代码:

#if defined(SM429_LABEL) && (0 != SM429_LABEL)

这个代码,不仅仅只是判断单个宏是否被定义,而是还有更复杂的条件判断等,以此来组成复杂的预编译条件时,#ifdef是不可行的,这时候便是#if defined闪亮登场的时候了!

因此区别就很明显了

#ifdef是#if defined的功能简化版,只是判断单个宏是否被定义时可用#ifdef,其它复杂条件都得用#if defined。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • C中的预编译宏定义 2009-02-10 作者: infobillows 来源:网络 在将一个C源程序转换为可执行...
    白水灬煮一切阅读 5,547评论 0 5
  • 有些程序在调试、兼容性、平台移植等情况下可能想要通过简单地设置一些参数就生成一个不同的软件,这当然可以通过变量设置...
    hehtao阅读 4,918评论 0 11
  • 面试题 猜一下哪段代码会被编译进去,强调下是编译进去,不是执行 答案第一段条件编译:逻辑1会被编译进去第二段条件编...
    yanhooIT阅读 13,559评论 2 9
  • 目录 一.预处理的工作方式... 3 1.1.预处理的功能... 3 1.2预处理的工作方式... 3 二.预处理...
    朱森阅读 5,248评论 0 2
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,403评论 19 139