主要内容

MISRA C++:2023 Rule 19.6.1

The #pragma directive and the _Pragma operator should not be used

自 R2024b 起

描述

规则定义

The #pragma directive and the _Pragma operator should not be used. 1

理由

在代码中使用 #pragma 指令会导致实现定义的行为。某些编译器可能还不支持该指令。

故障排除

如果您预期会出现违规,而 Polyspace® 未报告该违规,请参阅诊断为何编码规范违规未按预期显示

示例

全部展开

//header.h
#pragma once //Noncompliant

#ifndef HEADER_H_ //Compliant
#define HEADER_H_
// ...
// body of header file
//..
#endif

#pragma once 指令可防止 header.h 被包含多次。但是,如果您将 header.h 复制到多个工程模块中,该指令可能会也可能不会将这些副本视为同一个文件,这取决于具体实现。为了避免重复定义,请改用 #ifndef include 防卫式声明。

检查信息

组:预处理指令
类别:建议

版本历史记录

在 R2024b 中推出


1 All MISRA coding rules and directives are © Copyright The MISRA Consortium Limited 2021.

The MISRA coding standards referenced in the Polyspace Bug Finder™ documentation are from the following MISRA standards:

  • MISRA C:2004

  • MISRA C:2012

  • MISRA C:2023

  • MISRA C++:2008

  • MISRA C++:2023

MISRA and MISRA C are registered trademarks of The MISRA Consortium Limited 2021.