system_header
pragma
将文件的其余部分视为诊断报告的外部文件。
语法
#pragma system_header
备注
system_header
pragma 告诉编译器以 /external:Wn
选项为当前源文件的其余部分指定的级别显示诊断信息。 有关如何为编译器指定外部文件和外部警告级别的更多信息,请参阅 /external
。
system_header
pragma 不适用于当前源文件的末尾。 换句话说,它不适用于包含此文件的文件。 即使没有将其他文件指定为编译器的外部文件,system_header
pragma 也适用。 但是,如果未指定 /external:Wn
选项级别,编译器可能会发出诊断并使用应用于非外部文件的相同警告级别。 影响警告行为的其他 pragma 指令在 system_header
pragma 之后仍然适用。
#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_header
pragma 自 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
关键字