問題タブ [misra]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - 医療業界向け MISRA 相当?
タイトルとほぼ同じですが、自動車業界の MISRA に相当する医療業界のドキュメント、標準、またはセットはありますか?
私はCの分野で働いていますが、言語にとらわれないものなら何でもいいでしょう
c++ - doubleではなくfloatを必要とするprintf指定子はありますか?
snprintf
タイプのパラメータで「%f」指定子を使用すると、MISRAタイプのエラーが発生しますfloat
。
私の調査によると、「%f」はのタイプを想定しているため、MISRAは正しいですdouble
。
float
型パラメーターではなく型パラメーターを使用する浮動小数点指定子または修飾子はありdouble
ますか?
私は組み込みシステムで作業していますがdouble
、関数を満足させるためだけに32ビット浮動小数点から64ビットに変換したくありませんsnprintf
。コードはデバッグ/コンソールポートに出力され、これが変換が行われる唯一の場所です。
コード例が必要な方のために:
SOとWebに関する私の研究はすべて、浮動小数点値の出力に関するものであり、float
昇格double
が行われないようにパラメーターを必要とする指定子に関するものではありません。
ARM7TDMIプロセッサ用のIAREmbeddedWorkbenchコンパイラを使用しています。
c - MISRA C 2004 および c99
MISRA C 2004 の規則 1.1 は、仕様が c90 をカバーし、c99 をカバーしないことを指定します。
自分でコーディングする代わりに、stdint および stdbool ライブラリを使用したいと考えています。MISRA 実装でこの例外を作成した人はいますか?
c - char配列とMISRAエラーの初期化
私は次の行を持っています(問題を最小限に示すために縮小されています):
この行は、次のMISRAエラーを生成します。
なぜこれがエラーなのですか?
私の現在の回避策は次のとおりです。
これは、型が私のコンパイラ(IAR EW)によってchar
実装されていることを示しています。signed char
私の理解では、「\ 0」は文字リテラルであるため、タイプと一致する必要がありchar
ます。
c - C90標準でenumを無署名にする方法はありますか? (MISRA-C 2004準拠)
列挙型を「署名なし」にする方法を見つけようとしています。
もちろん、型キャストを追加してエラーを取り除くことができますが、これには時間がかかり、エラーが発生しやすくなります。
では、MISRA-C 2004 が好む特定の列挙型を署名なしにする方法はありますか?
c++ - misraルールに準拠していない#defineコマンドで配列を定義する
私はこの定義を持っています:
いつ
残念ながら、MISRA-C++ルール8-5-2に準拠していません。
なぜ準拠していないのか説明してもらえますか?#defineコマンドは定義を次のようなものに変えると思いました:
これはMISRAルールに準拠しています。
を維持しながら、これをMISRAに準拠させる方法はあり#define
ますか?
c++ - MISRA による null-pointer-constant 警告の代わりにリテラル ゼロ
私はこの機能を持っています:
コンパイルされますが、次の MISRA 警告が表示されます。
MISRA-C++ ルール 4-10-2 (必須): リテラル ゼロ (0) は null-pointer-constant として使用してはならない。
さて、もしnumShots
「本物の」ポインターだったら、私はに変更できたはず0
ですNULL
。しかしnumShots
、参照であり、それはint
.
MISRA は何を望み、その理由は何ですか?
c - typedef struct ポインターを int ポインターとしてキャストする MISRA04
MSP430F5438A 用のファームウェアを書いています。このコードはほとんどが MISRA04 準拠であることを望みます (C90 ではなく C99 を使用しています)。MISRA 準拠をチェックできる IAR 5.51 を使用しています。
次のデータ構造があります。
この構造体のインスタンスを、グローバルに読み取ることができるフラッシュ メモリに作成したいと考えています。フラッシュに書き込むための別の方法が既にあります。
この構造体へのグローバル ポインターの定義は次のとおりです。
これは問題なく動作し、MISRA に準拠しているようです。
これで、フラッシュ内の任意のセグメントに対して書き込みおよび読み取りを行う一連の関数をフラッシュ ドライバーに実装しました。それらはすべて uint8_t ポインターを引数として取ります。
このような関数を呼び出すにはどうすればよいですか?
これ:
コンパイルして正常に動作しますが、MISRA04 によるとタブーです...
ありがとう、ニック
c++ - MISRA C++ 2008 Required Rule 5-2-12 に違反せずに std::map にアイテムを挿入する方法は?
PC-Lint (au-misra-cpp.lnt) で次のエラーが発生します。
エラー 1960: (注 -- MISRA C++ 2008 Required Rule 5-2-12、ポインタを期待する関数に渡された配列型に違反しています)
このコードで:
_IDs は次のように宣言されます。
また、次のように変更しようとしました:
しかし、同じエラーが発生します。
コードをミスラに準拠させるにはどうすればよいですか?