c++标准库中的min与C语言宏定义min的冲突解决办法

c++ 模板中,提供了根据类型输出类型的值域范围类模板,即

limits中的numeric_limits类模板函数max和min

使用时,需要注意,容易与C语言的宏定义min/max冲突

此时有几种解决办法:

1.先取消min/max的宏定义,使用完后恢复

如下:

 

复制代码
#ifdef min
#define __save_min
#undef min
#endif

#ifdef max
#define __save_max
#undef max
#endif

template<typename T = unsigned int>
class XNumberLimit
{
public:
    static T get_min()
    {
        return std::numeric_limits<T>::min();
    }
    static T get_max()
    {
        return std::numeric_limits<T>::max();
    }
};

#ifdef __save_min
#define min(a, b)        (((a) < (b)) ? (a) : (b))
#undef __save_min
#endif

#ifdef __save_max
#define max(a, b)        (((a) > (b)) ? (a) : (b))
#undef __save_max
#endif
复制代码

第二种办法,将min/max使用括号括起来,这样就可以绕开C语言的宏函数判断了

(std::numeric_limits<T>::min)();
(std::numeric_limits<T>::max)();

 

posted @   日月王  阅读(1300)  评论(1编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示