問題タブ [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.

0 投票する
3 に答える
116 参照

c - ステートメントをパラメーターとして結合するための c の構文は何ですか?

パラメーターが計算されるときに関数を実行する古い厄介な方法があることに気付きましたが、それが何と呼ばれているのかわからないため、ルールを検索できません。

アイデアは、「()」が prep_dstr 関数を実行した後にアドレス dstr を返すというものです。

私はそれが醜いことを知っており、以前はラインでそれを行うことができました-しかし、それは複雑です...

#

わかりました-それをしないようにという嘆願への答えです。

私は実際にいくつかの既存のコードでMISRAクリーンアップを行っています(私のものではありません)、現在、「prep_dstr」関数はバッファを取り(バッファの長さに関係なく)それを変更し、渡されたポインタを返しますパラメータ。

私は小さな一歩を踏み出すのが好きです-テストしてから、別の小さな一歩を踏み出します。

したがって、永続性についての手がかりなしでポインターを返すよりも少し厄介なアプローチは、ポインターを返す関数を停止し、コンマ演算子を使用することです (バッファーの末尾から外れないように確認した後)。

これでMISRAエラーのカウントダウンが始まります。すべてがまだ機能し、MISRAエラーがなくなったら、エレガンスに近づこうとします-おそらく再来年:)

0 投票する
1 に答える
1284 参照

c - C でビット演算子を使用した短整数を使用する

以前の質問に関連して、MISRA C 2004 のいくつかのルールがわかりません。

ISO C99 ドラフト 2007の6.5 セクション §4 :

一部の演算子 (単項演算子 ~ と、2 項演算子 <<、>>、&、^、および | をまとめてビット演算子と呼ぶ) は、整数型のオペランドを持つ必要があります。これらの演算子は、整数の内部表現に依存する値を生成し、符号付き型の実装定義および未定義の側面を持ちます。

わかりました。ビットごとの演算子で符号付き整数を使用すると、未定義の動作が発生する可能性があります (意味がありません)。

良い解決策は、整数の昇格をバイパスするために、より広い符号なし整数型への明示的な変換を使用し、ビットごとの演算子で符号付きの値を使用しないことです (以前の質問の関連する回答を参照してください)。

しかし、MISRA C 2004 では、ビット単位の演算子で小さな符号なし整数を使用できます (ルール 10.5 など)。整数昇格がビットごとの演算子で符号付きの値を使用することにつながるのはなぜですか? わからないこともあると思います。

0 投票する
8 に答える
3211 参照

c - MISRA C が、ポインターのコピーによってメモリー例外が発生する可能性があると述べているのはなぜですか?

MISRA C 2012 ディレクティブ 4.12 は、「動的メモリ割り当てを使用しないでください」です。

例として、このドキュメントでは次のコード サンプルを提供しています。

また、文書には次のように記載されています。

ポインターに格納された値は、free の呼び出し後も変更されていませんが、一部のターゲットでは、ポインターが指すメモリが存在しなくなり、そのポインターをコピーすると メモリ例外が発生する可能性があります

私はほとんどすべての文で問題ありませんが、最後です。p と q は両方ともスタックに割り当てられているため、ポインターのコピーによってメモリ例外が発生する可能性はありますか?

0 投票する
2 に答える
1349 参照

c - ルール 10.1、複雑な整数式の暗黙の変換

-> 次のエラーがスローされます:

  1. MISRA 2004 Required Rule 12.8 に違反、シフト演算子の右辺の範囲外の値
  2. MISRA 2004 Required Rule 10.1、複雑な整数式の暗黙の変換に違反します

これを解決するには?