有谁知道这个神秘的操作员">?" 在GCC

vim*_*hap 8 c c++ gcc

有谁知道>?运营商?我有一个下面定义的宏,它抛出错误,但我从来没有见过这样的运算符:

#define MAX_SIZEOF2(a,b)           (sizeof(a) >? sizeof(b))
Run Code Online (Sandbox Code Playgroud)

Sha*_*our 6

最小和最大运营商是一个过时的gcc扩展:

G ++最小和最大运算符(' <?'和' >?')及其复合形式(' >?=')和' <?=')已被弃用,现在已从G ++中删除.使用这些运算符的代码应该被修改为使用std::minstd::max不是代替.

以下是旧文档所说的内容:

让运算符返回两个参数的"最小值"或"最大值"非常方便.在GNU C++中(但不是在GNU C中),

a <? b

是最小值,返回数值a和b中较小的一个;

a >? b

是最大值,返回数值a和b中较大的一个.

这样做的好处是,如果不仔细使用,它可以避免出现副作用问题的宏.


Rah*_*thi 5

我想它已经从GCC 4.2版中删除了

相当于a >?= ba = max(a,b);

从手册

G ++的最小和最大运算符(' <?'和' >?')及其复合形式(' >?=')和' <?=')已弃用,现在已从G ++中删除。使用这些运算符的代码应修改为使用std::minstd::max

编辑:

根据您的评论,您需要添加#include <algorithm>以使用std::maxstd::min。您也可以检查一下以供参考