具体来说,我遇到了警告 4373 的问题。我希望禁用此特定警告。但是,警告#pragma
没有效果。首先我尝试在有问题的代码周围使用禁用,然后抑制,但都没有任何效果。我还尝试在派生方法和基本方法周围使用禁用,但也没有效果。如何专门抑制此警告?
编辑:有没有办法为某些特定功能而不是全局禁用此警告?
具体来说,我遇到了警告 4373 的问题。我希望禁用此特定警告。但是,警告#pragma
没有效果。首先我尝试在有问题的代码周围使用禁用,然后抑制,但都没有任何效果。我还尝试在派生方法和基本方法周围使用禁用,但也没有效果。如何专门抑制此警告?
编辑:有没有办法为某些特定功能而不是全局禁用此警告?
您可以使用在本地抑制警告#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);
}
您的项目设置应该能够为您提供帮助。转到项目配置->C/C++->高级并在“禁用特定警告”字段中输入 4373。
请注意,此设置仅适用于所选配置,而不适用于全局。