“警告 C4709:数组索引表达式中的逗号运算符” - 但在任何地方都看不到逗号!

发布于 2024-11-07 09:44:59 字数 751 浏览 0 评论 0原文

以这个小示例代码为例:

struct Test{
    operator int() const{
        return 0;
    }
};

Test test(){
    return Test();
}

int main(){
    int arr[10];
    arr[test()] = 5;
}

在 Visual Studio 2010 下使用 /W4 进行编译会生成 说警告。有趣的是,如果我添加一个简单的默认构造函数,警告就会突然消失。而且,它只适用于该星座。如果我删除函数调用或不返回用户定义的类型,警告就会消失。此外,正如预期的那样,GCC 不会产生这样的警告。

那么,我可以将上述代码的警告视为 Visual Studio 中的错误吗?还是有比看起来更多的内容?至少可以说,这会非常令人惊讶。


编辑:创建了Microsoft Connect 上的错误报告

Take this little example code:

struct Test{
    operator int() const{
        return 0;
    }
};

Test test(){
    return Test();
}

int main(){
    int arr[10];
    arr[test()] = 5;
}

Compiling under Visual Studio 2010 with /W4 generates said warning. Interestingly, if I add but a simple default constructor, the warning suddenly vanishes. Also, it only works in that constellation. If I remove the function call or don't return a user-defined type, the warning disappears. Also, as expected, GCC doesn't produce such a warning.

So, can I take this warning with the above code as a bug in Visual Studio or is there more to it than seems? Would be very surprising though, to say the least.


Edit: Created a bug report on Microsoft Connect.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

迷荒 2024-11-14 09:44:59

这绝对是一个错误 - 误导性警告。

Definitely it is a bug - misleading warning.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文