C#:是否需要pragma警告恢复?

Svi*_*ish 43 c# pragma compiler-warnings

msdn我得到这个:

#pragma warning disable warning-list
#pragma warning restore warning-list
Run Code Online (Sandbox Code Playgroud)

在示例中,使用了disablerestore.restore如果我想要为整个文件禁用它,是否有必要?

就像,如果我不恢复,它携带多远?之后编译的所有内容都禁用警告吗?或者仅仅是该文件的其余部分?还是被忽略了?

Shu*_*oUk 45

如果不还原,则对文件的其余部分禁用处于禁用状态.

有趣的是,这种行为没有语言规范中定义.(参见第9.5.8节)但是,条件编译符号的9.5.1部分确实表明"直到文件结束行为"

符号保持定义,直到处理完相同符号的#undef指令,或者直到达到源文件的末尾.

鉴于"预处理器"实际上是编译的词法分析阶段的一部分,在可预见的未来,这种行为很可能是微软和所有其他实现的有效合同(特别是因为替代将是非常复杂且非确定性的在源文件编译顺序)

  • 总结:行为没有定义所以我们需要恢复 (4认同)
  • @TKK它似乎是"未定义的",因为它取决于编译器处理文件的顺序.它会在编译器跨越它时生效,并在明确禁用之前保持有效.文件结束不适用于部分.您肯定希望在每个文件中禁用和重新启用,无论您需要它. (2认同)