メインコンテンツ

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

MISRA C:2012 Rule 22.5

A pointer to a FILE object shall not be dereferenced

説明

ルール定義

A pointer to a FILE object shall not be dereferenced 1 .

根拠

標準では、ストリームの制御に使用される FILE オブジェクトのアドレスは重要になる場合があります。そのオブジェクトをコピーすると、同じ動作が実現されない可能性があります。このルールでは、そうしたコピーが実行できないようにします。

FILE オブジェクトを直接操作すると、ストリーム指定子としての使用と互換性がなくなる場合があります。

トラブルシューティング

ルール違反を想定していてもその違反が表示されない場合、コーディング規約違反が想定どおりに表示されない理由の診断を参照します。

すべて展開する

#include <stdio.h>

void func(void) {
    FILE *pf1;
    FILE *pf2;
    FILE f3;

    pf2 = pf1;        /* Compliant */
    f3 = *pf2;        /* Non-compliant */
    pf2->_flags=0;    /* Non-compliant */
 }

この例では、FILE* のポインター pf2 がデリファレンスされる場合、ルールに違反します。

チェック情報

グループ: Resources
カテゴリ: Mandatory
AGC カテゴリ: Mandatory

バージョン履歴

R2015b で導入


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.