加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在C中定义“between”宏的最佳方法

发布时间:2020-12-16 10:20:46 所属栏目:百科 来源:网络整理
导读:什么是定义宏之间的最佳方法,类型为泛型(char,int,long) 如果数字在输入的其他数字之间,则返回true. 我试图谷歌,但我没有找到任何东西. 编辑:给出的两个边界的顺序无关紧要.所以它可以更一般. 解决方法 如果您执行以下操作: #define BETWEEN(a,b,c) (((a)
什么是定义宏之间的最佳方法,类型为泛型(char,int,long)
如果数字在输入的其他数字之间,则返回true.
我试图谷歌,但我没有找到任何东西.

编辑:给出的两个边界的顺序无关紧要.所以它可以更一般.

解决方法

如果您执行以下操作:

#define BETWEEN(a,b,c)  (((a) >= (b)) && ((a) <= (c)))

你会对a的双重评价有问题.想想如果你使用具有副作用的功能会发生什么……

你应该做一些像这样的事情:

#define BETWEEN(a,c) ({ __typeof__ (a) __a = (a); ((__a) >= (b) && ((__a) <= (c)) })

(编辑因为结果不应该取决于b和c的顺序):

#define BETWEEN(a,c) 
           ({ __typeof__ (a) __a = (a);
              __typeof__ (b) __b = (b);
              __typeof__ (c) __c = (c);
               (__a >= __b && __a <= __c)||
               (__a >= __c && __a <= __b)})

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读