ホーム > ユーザーサポート > FAQ カバレッジマスターwinAMS
【質問】
構造体を引数に持つ関数を単体テストする際に、「WinAMS ポインタ割り当ての設定を行っていません(関数@構造体数)」のエラーが出てしまいます。構造体引数のメンバーにはポインタ変数は1つもないのですが、なぜこのエラーが出力されるのでしょうか?
【回答】
構造体が引数になっている場合や、リターン値が構造体になっている場合は、通常のコンパイラのコード展開では、評価対象の関数がコールされる前に呼びだし側の親関数の中に、その構造体のエリアを確保するコード展開が作られます。
カバレッジマスターでこの様な関数をテストする際にも、カバレッジマスター側で通常は親関数に展開されている構造体エリアの確保の動作を行う必要があり、これを「ポインタ割り当てエリア設定」に指定されたエリアを使用して行うようになっています。
これはコンパイラのコード展開に依存するため、まれに例外もありますが、構造体が引数やリターン値に指定されているときには、ほとんどが「ポインタ割り当てエリア設定」が必要です。
※マイコンやご利用のコンパイラ(開発環境)によっては、引数に構造体(ポインタでない実体)を渡す機能がサポートされていない場合もあります。