MIN/MAX宏不能与visual studio一起工作

MIN/MAX Macros not working with visual studio

本文关键字:visual studio 一起 工作 不能 MAX MIN      更新时间:2023-10-16

我正试图编写一些需要在visual studio和linux (gcc)环境中编译/运行的代码。当我试图在windows中编译我的文件时,我得到了一个有点模糊的错误,我想知道是否有人可以指出我错过了什么……我有一个标准宏:

#define __MAX(a,b) 
   ({ __typeof__ (a) _a = (a); 
       __typeof__ (b) _b = (b); 
     _a > _b ? _a : _b; })

然后当我试图调用它时:

        int x = __MAX(0, 2);

我得到一个expected an expression错误在visual studio,指向这一行。我是visual studio的新手,所以我不确定它有什么不喜欢的。谁能指出我哪里做错了吗?

类型的的东西是gcc特有的。当你用cl.exe (visual studio使用的微软编译器)编译时,你没有这些东西。https://social.msdn.microsoft.com/forums/vstudio/en us/984ae3e8 - 6391 - 45 - b9 - 8885 - edb088da8bfa/will msvc -支持- a - typeof -运营商-像gcc?forum=vclanguage

如果问题是std::maxstd::min不工作,因为宏,你可以在本地禁用它们,像这样:

#define DONT_EXPAND_MACRO
template<template T>
const T mini(const T& a, const T& b)
{
    using std::min;
    return min DONT_EXPAND_MACRO (a, b);
}