gpt4 book ai didi

visual-studio - Visual Studio 2010 (C++) : suppress C4706 warning temporarily

转载 作者:行者123 更新时间:2023-12-04 00:01:43 25 4
gpt4 key购买 nike

在 Visual Studio 2010 中编译以下 C++ 源文件并启用警告级别/W4 时

#include <cstdio>  // for printf
#include <cstring> // for strcmp

char str0[] = "Hello";
char str1[] = "World";

int main()
{
int result;

if (result = strcmp(str0, str1)) // line 11
{
printf("Strings are different\n");
}
}

您收到以下警告

warning C4706: assignment within conditional expression



对于第 11 行。

我想在这个地方完全压制这个警告。所以我尝试了谷歌并找到了这个页面: http://msdn.microsoft.com/en-us/library/2c8f766e(v=VS.100).aspx

所以我将代码更改为以下内容 - 希望这可以解决问题:
#include <cstdio>  // for printf
#include <cstring> // for strcmp

char str0[] = "Hello";
char str1[] = "World";

int main()
{
int result;

#pragma warning(push)
#pragma warning(disable : 4706)
if (result = strcmp(str0, str1))
#pragma warning(pop)
{
printf("Strings are different\n");
}
}

它没有帮助。

这个变体也没有帮助:
#include <cstdio>  // for printf
#include <cstring> // for strcmp

char str0[] = "Hello";
char str1[] = "World";

int main()
{
int result;

#pragma warning(push)
#pragma warning(disable : 4706)
if (result = strcmp(str0, str1))
{
#pragma warning(pop)
printf("Strings are different\n");
}
}

为了避免进一步的询问:我在每次编译之前清理了解决方案。所以这可能不是错。

所以总而言之:我如何在这个地方完全抑制 C4706?

编辑 是的,重写是可能的 - 但我真的想知道为什么我试图抑制警告的方式(在 MSDN 上正式记录)不起作用 - 错误在哪里?

最佳答案

不要试图隐藏你的警告,修复 the issue it's complaining about ;您的赋值有一个值(赋值左侧的值)可以在另一个表达式中合法使用。

您可以通过显式测试分配结果来解决此问题:

if ((result = strcmp(str0, str1)) != 0) 
{
printf("Strings are different\n");
}

关于visual-studio - Visual Studio 2010 (C++) : suppress C4706 warning temporarily,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6986018/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com