メインコンテンツ

ISO/IEC TS 17961 [filecpy]

FILE オブジェクトのコピー

説明

ルール定義

FILE オブジェクトのコピー。1

Polyspace 実装

このチェッカーは、FILE* ポインターのデリファレンスをチェックします。

すべて展開する

問題

この問題は、FILE オブジェクトへのポインターをデリファレンスする場合に発生します。

リスク

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

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 がデリファレンスされる場合、ルールに違反します。

チェック情報

決定可能性:決定不可能

バージョン履歴

R2019a で導入


1 Extracts from the standard "ISO/IEC TS 17961 Technical Specification - 2013-11-15" are reproduced with the agreement of AFNOR. Only the original and complete text of the standard, as published by AFNOR Editions - accessible via the website www.boutique.afnor.org - has normative value.