带有min()/ max()调用的代码产生奇怪的C ++错误
时间:2020-03-05 18:40:15 来源:igfitidea点击:
当我的C ++代码调用min()或者max()时,我看到奇怪的错误。我正在使用Visual C ++编译器。
解决方案
回答
检查代码是否包含windows.h头文件,并且代码或者其他第三方头文件都有自己的min()/ max()定义。如果是,则在Windows.h包含之前添加NOMINMAX的定义,如下所示:
#define NOMINMAX #include <windows.h>
回答
嗯...范围,伙计:std :: min()
,std :: max()
。
回答
我已经好几年没有用过了,但是从内存提升中分配最小值和最大值也可能吗?
回答
另一种可能是副作用。大多数最小/最大宏将多次包含参数,并且可能无法达到期望。错误和警告也可能生成。
max(a,i++) expands as ((a) > (i++) ? (a) : (i++)) afterwards i is either plus 1 or plus 2
如果使用公式调用,扩展中的()可以避免出现问题。尝试扩展max(a,b + c)
回答
老实说,当涉及最小/最大时,我发现最好自己定义一个:
#define min(a,b) ((a) < (b) ? (a) : (b)) #define max(a,b) ((a) >= (b) ? (a) : (b))