优秀的编程知识分享平台

网站首页 > 技术文章 正文

C语言中在工作中用到的MAX()或者MIN()宏定义

nanyue 2024-09-12 15:52:43 技术文章 79 ℃

摒弃学习阶段的代码,使用真正工作中的代码设计:

#include <stdio.h>

#define MAX(x, y) (                    \
    {                                  \
        typeof(x) _max1 = (x);         \
        typeof(y) _max2 = (y);         \
        (void)(&_max1 == &_max2);      \
        _max1 > _max2 ? _max1 : _max2; \
    })

重点解释: (void)(&_max1 == &_max2);

乍一看是没有意义的。但其实它的作用是进行类型检查,确保 x 和 y 的类型相同。如果 x 和 y 的类型不同,编译器会报错。这是通过比较 _max1 和 _max2 的地址来实现的。因为 _max1 和 _max2 是 typeof(x) 和 typeof(y) 类型的变量,所以如果这两个类型不同,那么比较它们的地址会引发编译错误。这是一种在宏定义中强制类型检查的技巧。

Tags:

最近发表
标签列表