system_header pragma

将文件的其余部分视为诊断报告的外部文件。

语法

#pragma system_header

备注

system_headerpragma 告诉编译器以 /external:Wn 选项为当前源文件的其余部分指定的级别显示诊断信息。 有关如何为编译器指定外部文件和外部警告级别的更多信息,请参阅 /external

system_headerpragma 不适用于当前源文件的末尾。 换句话说,它不适用于包含此文件的文件。 即使没有将其他文件指定为编译器的外部文件,system_headerpragma 也适用。 但是,如果未指定 /external:Wn 选项级别,编译器可能会发出诊断并使用应用于非外部文件的相同警告级别。 影响警告行为的其他 pragma 指令在 system_headerpragma 之后仍然适用。 #pragma system_header 的效果类似于 warning pragma

// If n represents the warning level specified by /external:Wn,
// #pragma system_header is roughly equivalent to:
#pragma warning( push, n )

// . . .

// At the end of the file:
#pragma warning( pop )

system_headerpragma 自 Visual Studio 2019 版本 16.10 起可用。

示例

此示例标题显示如何将文件的内容标记为外部:

// library.h
// Use /external:Wn to set the compiler diagnostics level for this file's contents

#pragma once
#ifndef _LIBRARY_H // include guard for 3rd party interop
#define _LIBRARY_H
#pragma system_header
// The compiler applies the /external:Wn diagnostic level from here to the end of this file.

// . . .

// You can still override the external diagnostic level for warnings locally:
#pragma warning( push )
#pragma warning( error : 4164 )

// . . .

#pragma warning(pop)

// . . .

#endif

另请参阅

/external
warning pragma
/Wn(编译器警告级别)
Pragma 指令以及 __pragma_Pragma 关键字