我遇到了警告4373的问题,具体而言。我希望禁用此特定警告。但是,警告#pragma
无效。首先,我尝试在违规代码周围使用禁用,然后抑制,但都没有任何影响。我也试过使用派生和基本方法的禁用,也没有效果。我该如何具体压制这个警告?
编辑:有没有办法为某些特定功能禁用此警告,而不是全局?
答案 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。
请注意,此设置仅适用于所选配置,不适用于全局。