最近,在将我们的应用程序从gcc-5.3移植到8.2时,我们注意到一个奇怪的行为破坏了我们的应用程序。简而言之,gcc-8.2似乎删除了我们的“比较2个无符号整数的if分支”之一,甚至没有发出警告。我们用相同的编译选项尝试了g++5.3、g++7.4和g++8.2,只有g++8.2有这个问题。下面将展示一个简短的例子。#include#include#include#includeusingnamespacestd;structmyunion{myunion(uint32_tx){_data.u32=x;}uint16_thi()const{return_data.u16[1];}ui