有谁知道这个神秘的运营商“>?”在GCC

时间:2015-05-06 11:33:56

标签: c++ c gcc

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

#define MAX_SIZEOF2(a,b)           (sizeof(a) >? sizeof(b))

3 个答案:

答案 0 :(得分:6)

最小和最大运算符deprecated gcc extension

  

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

以下是older documentation所说的内容:

  

让操作员返回“最小”或者非常方便   两个论点的“最大值”。在GNU C ++中(但不是在GNU C中),

     

a <? b

     
    

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

  
     

a >? b

     
    

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

  

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

答案 1 :(得分:5)

我猜它已从GCC 4.2版中删除

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

来自手册

  

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

修改

根据您的评论,您需要添加#include <algorithm>才能使用std::maxstd::min。您也可以查看reference

答案 2 :(得分:3)

它是deprecated non-standard operator,它给出了其操作数的最大值。海湾合作委员会不再支持它。

在C ++中,这相当于std::max(sizeof(a), sizeof(b))