我从msdn得到以下信息:
#pragma warning disable warning-list
#pragma warning restore warning-list
在这些示例中,同时使用了disable
和restore
。如果我想要在整个文件中禁用它,是否有必要进行restore
?如果我不进行
restore
,它会延续多久?警告会被禁用在编译后的所有内容中吗?还是仅仅禁用该文件其余部分?或者是被忽略了?我从msdn得到以下信息:
#pragma warning disable warning-list
#pragma warning restore warning-list
在这些示例中,同时使用了disable
和restore
。如果我想要在整个文件中禁用它,是否有必要进行restore
?restore
,它会延续多久?警告会被禁用在编译后的所有内容中吗?还是仅仅禁用该文件其余部分?或者是被忽略了?如果您不还原,禁用状态将在文件其余部分保持活动。
有趣的是,这种行为并未在语言规范中定义。 (见第9.5.8节) 但是,关于条件编译符号的9.5.1节确实指出了这种“直到文件结束的行为”
该符号仍然被定义,直到处理该同一符号的#undef指令,或者达到源文件的末尾。
由于'预处理器'实际上是编译的词法分析阶段的一部分,因此很可能这种行为是微软和所有其他实现的有效协议(尤其是因为替代方案将基于源文件编译顺序非常复杂和不确定)。
#pragma warning disable 649
struct MyInteropThing
{
int a;
int b;
}
#pragma warning restore 649
字段'field'从未被分配,并且始终具有其默认值'value'
但我不想让整个文件都不受检查。