NoS*_*tAl 2 c++ sequence-points c++17
正如在这个godbolt链接上看到的
c++14 模式下的 clang(但不是 c++17)和 c++17 模式下的 GCC 会产生关于排序的警告。我假设在 C++17 中,= 的 rhs 上的所有内容都在 lhs 之前进行评估,所以我不确定 gcc 警告是否正确。
Code is:
static int index =0;
void f(int* pindex){
pindex[index] = 5;
pindex[index] = index++;
}
int main(){
}
Run Code Online (Sandbox Code Playgroud)
gcc警告是:
:在函数“void f(int*)”中::4:30: 警告:对“索引”的操作可能未定义 [-Wsequence-point]Run Code Online (Sandbox Code Playgroud) :4:30: 警告:对“索引”的操作可能未定义 [-Wsequence-point]4 | pindex[index] = index++; | ~~~~~^~编译器返回:0
注意:我知道标准没有指定警告,指定问题wrt警告比谈论序列点/排序保证要容易得多。