MISRA C:2012 Rule 1.5
Obsolescent language features shall not be used
R2024a 以降
説明
ルール定義
Obsolescent language features shall not be used 1 .
This rule comes from MISRA C™:2012 Amendment 3.
根拠
このルールでは、C 標準で使用されなくなった機能として宣言されている機能の使用を禁止しています (たとえば、C11 規格の 6.11 節 "Future language directions" と 7.31 節 "Future library directions" を参照してください)。これらの機能には、この標準でより有効な代替機能が規定されているか、安全でない動作を示す可能性があることから、使用されなくなった機能として宣言されています。この標準の今後のバージョンで、これらの機能が廃止される可能性もあります。
Polyspace 実装
ルール チェッカーは、使用されなくなった言語機能の使用をチェックします。
| 使用されなくなった言語機能 | チェッカーの実装 | 言語バージョン | 
|---|---|---|
| 
 | ルール チェッカーは、識別子が複数回宣言されていて、 | C99、C11、C18 | 
| 宣言内での宣言指定子で、ストレージ クラス指定子が先頭以外の位置にある。 | ルール チェッカーは、 int static var; //Noncompliant | C99、C11、C18 | 
| (プロトタイプ形式のパラメーター型宣言子ではなく) 空のかっこを使用した関数宣言の使用。 | ルール チェッカーは、関数宣言でパラメーターがないことを示すために  | C99、C11、C18 | 
| (プロトタイプ形式のパラメーター型宣言子と識別子宣言子ではなく) 別個のパラメーター識別子リストと宣言リストを使用した関数定義の使用。 | ルール チェッカーは、次のようにパラメーター型がパラメーター名から分離されている K&R 形式の関数定義に対してフラグを設定します。 int foo (x, y) //Noncompliant
    int x;
    char y;
{
} | C99、C11、C18 | 
| ( | ルール チェッカーは、マクロ  | C18 | 
| ( | ルール チェッカーは、マクロ  | C99、C11、C18 | 
| ( | ルール チェッカーは、 | C99 | 
| ファイル位置インジケーターがゼロとなっているバイナリ ストリームでの  | ルール チェッカーは、ファイル位置インジケーターがゼロとなっているストリームで関数  void addToFile() {
    FILE* my_file = fopen("my_file", "a");
    char c;
    c = getc(my_file);
    fseek(my_file, 0, SEEK_SET);
    // File position indicator is 0.
    ungetc(c, my_file); //Noncompliant
} | C99、C11、C18 | 
| ゼロに等しいサイズ引数が指定された ( | ルール チェッカーは、ゼロのサイズ引数が指定された  | C18 | 
トラブルシューティング
ルール違反を想定していてもその違反が表示されない場合、コーディング規約違反が想定どおりに表示されない理由の診断を参照します。
チェック情報
| グループ: 標準 C 環境 | 
| カテゴリ: 必要 | 
| AGC カテゴリ: 必要 | 
バージョン履歴
R2024a で導入
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.