C++ 为什么缺少名称的函数调用仍然可以编译?

C++ 为什么缺少名称的函数调用仍然可以编译?,c++,clangpowertools,C++,Clangpowertools,一个开发人员在复制和粘贴类似类型的代码时犯了一个错误,而不是 int x = 100; int y = 100; int z = 100; aFunction(x, y, z); 他们不小心打字了 int x = 100; int y = 100; int z = 100; (x, y, z); //What does this Line of Code do? 此代码已成功编译,未发出任何警告。在VS 2015中尝试调试此代码时,调试器将跳过这一行代码 为什么这一行代码编译时不

一个开发人员在复制和粘贴类似类型的代码时犯了一个错误,而不是

int x = 100;
int y = 100;
int z = 100;
aFunction(x, y, z);
他们不小心打字了

int x = 100;
int y = 100;
int z = 100;     
(x, y, z);  //What does this Line of Code do?
此代码已成功编译,未发出任何警告。在VS 2015中尝试调试此代码时,调试器将跳过这一行代码

为什么这一行代码编译时不发出警告?这一行代码在做什么

更新:
包含所有警告的Visual Studio 2015中的构建显示此警告,但级别4不显示此警告。奇怪的是,无论是代码分析还是叮当作响的电动工具都没有显示这种警告

谢谢

为什么这行代码要编译

因为这个表达式在语法上是正确的

没有警告,这行代码在做什么

这取决于编译器和对其设置的警告级别。若表达式不起任何作用,某些编译器会发出警告。例如,带有-Wall标志的g++提供了以下内容:

 t.cpp:4:5: warning: left operand of comma operator has no effect [-Wunused-value]
     (x, y, z);  //What does this Line of Code do?

 t.cpp:4:8: warning: right operand of comma operator has no effect [-Wunused-value]
     (x, y, z);  //What does this Line of Code do?

//这行代码做什么?
什么都不做。
(x,y,z)不是函数调用。括号用于其他内容。有趣的是,我认为这可能是本问题中未描述的用法:。相关:在Visual Studio 2015中生成所有警告时显示此警告,但级别4不显示此警告。奇怪的是,代码分析和Clang Power Tools都没有显示此警告。@DonaldHerman如果您在Clang Power Tools中遇到任何问题,您可以在此处打开一个问题: