玖叶教程网

前端编程开发入门

【今日技能+1】# if defined 与#ifdef的区别

在阅读onnxruntime源码时,遇到了 #if defined 的写法,平时只用到了#if define(区别在少了d);下面是define与defined的用法与区别:

/* CONDITION1.1 或 CONDITION1.2被定义,则选择执行printf1,否则执行printf2 */
#ifdef CONDITION1.1
	printf1("meet with condition 1 !");
#else
    #ifdef CONDITION1.2
      printf1("meet with condition 1 !");
    #else
        print2("meet with condition 2 !");
    #endif
#endif

上面展示了#ifdef的用法,但是上述写法不简洁,且看起来也怪怪的,那么我们是不是可以作如下改进呢?

/* 本段代码是:错误用法!错误用法!错误用法!重要事情说3遍 */
#ifdef CONDITION1.1 || CONDITION1.2
	printf1("meet with condition 1 !");
#else
	printf2("meet with condition 2 !");
#endif

上述用法是错误的。因为ifdef和ifndef仅能跟一个宏定义参数,而不能使用表达式。此时可以考虑使用#if defined,用法如下:

/* CONDITION1.1 或 CONDITION1.2被定义,则选择执行printf1,否则执行printf2 */
#if defined CONDITION1.1 || CONDITION1.2
	printf1("meet with condition 1 !");
#else
	printf2("meet with condition 2 !");
#endif

Now, as you see. 简洁了很多。#if !defined具有类似的用法。


发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言