メインコンテンツ

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

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 インクルード ガードを使用します。

チェック情報

グループ: Preprocessing Directives
カテゴリ: 推奨

バージョン履歴

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.