我正在看一些代码,看到这样的东西:
int d = 1;
int somethingbigger = 2;
d >?= somethingbigger;
cout << d << endl;
我认为这应该输出2。但是我甚至不能用gcc 4.5.2编译这个。代码是在2005年编写的,并使用gcc 3.4.4编译(不是100%确定)。
谁能解释一下这是如何工作的,为什么我不能用最近的编译器编译这个
这是"maximum"赋值操作符,一个GCC扩展。
-
如果扩展未启用,那么您将无法使用此功能。
-
从4.0.1开始:
g++最小和最大算子 (
<?
和>?
) 及其复合形式(<?=
)和>?=
)已被弃用,并将被使用在未来版本中删除。使用这些操作符的代码应该是修改为使用std::min和std::max。 -
看起来它们在4.0.4就消失了
这不是c++代码
它使用的是gnu扩展,并且是完全不可移植的。
只需将其替换为符合标准的代码:
if (d < somethingbigger) d = somethingbigger;
IIRC,这是d = max(d, somethingBigger)的缩短版本;或者
d = (d < somethingbigger) ? somethingbigger : d;
有段时间没看到这个了,我很确定这是GCC的GNU扩展