有人知道>?
运营商吗?我有一个下面定义的宏,它抛出错误,但我从来没有见过这样的运算符:
#define MAX_SIZEOF2(a,b) (sizeof(a) >? sizeof(b))
答案 0 :(得分:6)
最小和最大运算符是deprecated gcc extension:
G ++最小和最大运算符('
<?
'和'>?
')及其复合形式('>?=
')和'<?=
')已弃用,现已从G ++中删除。应修改使用这些运算符的代码,以使用std::min
和std::max
代替。
以下是older documentation所说的内容:
让操作员返回“最小”或者非常方便 两个论点的“最大值”。在GNU C ++中(但不是在GNU C中),
a <? b
是最小值,返回数值a和b中较小的一个;
a >? b
是最大值,返回数值a和b中较大的一个。
这样做的好处是,如果不仔细使用它,它可以避免出现副作用问题的宏。
答案 1 :(得分:5)
我猜它已从GCC 4.2版中删除
相当于a >?= b
是a = max(a,b);
来自手册
G ++最小和最大运算符('
<?
'和'>?
')及其复合形式('>?=
')和'<?=
')已弃用,现已从G ++中删除。应修改使用这些运算符的代码,以使用std::min
和std::max
代替。
修改强>
根据您的评论,您需要添加#include <algorithm>
才能使用std::max
和std::min
。您也可以查看reference。
答案 2 :(得分:3)
它是deprecated non-standard operator,它给出了其操作数的最大值。海湾合作委员会不再支持它。
在C ++中,这相当于std::max(sizeof(a), sizeof(b))
。