2

具体来说,我遇到了警告 4373 的问题。我希望禁用此特定警告。但是,警告#pragma没有效果。首先我尝试在有问题的代码周围使用禁用,然后抑制,但都没有任何效果。我还尝试在派生方法和基本方法周围使用禁用,但也没有效果。如何专门抑制此警告?

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

4

2 回答 2

2

您可以使用在本地抑制警告#pragma

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

因此,例如,从MSDN 的 C4373 演示程序开始,这是一个禁止警告的修改版本:

#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);
}
于 2013-09-17T08:10:47.467 回答
1

您的项目设置应该能够为您提供帮助。转到项目配置->C/C++->高级并在“禁用特定警告”字段中输入 4373。

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

于 2013-09-17T07:21:39.427 回答