如何压制编译器警告C4373

时间:2013-09-17 07:13:52

标签: c++ visual-studio-2012

我遇到了警告4373的问题,具体而言。我希望禁用此特定警告。但是,警告#pragma无效。首先,我尝试在违规代码周围使用禁用,然后抑制,但都没有任何影响。我也试过使用派生和基本方法的禁用,也没有效果。我该如何具体压制这个警告?

编辑:有没有办法为某些特定功能禁用此警告,而不是全局?

2 个答案:

答案 0 :(得分:2)

您可以使用#pragma在本地取消警告。

#pragma warning( push )
#pragma warning( disable : 4373 )
// Some code
#pragma warning( pop ) 

因此,例如,从MSDN's C4373 demonstration program开始,这是一个禁止警告的修改版本:

#include <stdio.h>
struct Base
{
    virtual void f(int i) {
        printf("base\n");
    }
};

#pragma warning( push )
#pragma warning( disable : 4373 )
struct Derived : Base
{
    void f(const int i) {  // C4373
        printf("derived\n");
    }
};
#pragma warning ( pop )

void main()
{
    Derived d;
    Base* p = &d;
    p->f(1);
}

答案 1 :(得分:1)

您的项目设置应该能够帮助您。转到项目配置 - &gt; C / C ++ - &gt;高级,然后在“禁用特定警告”字段中输入4373。

请注意,此设置仅适用于所选配置,不适用于全局。