関数に値を渡すには

解決


願:脱初心者  2006-08-22 02:08:59  No: 62790

フラグ抽出関数
int flag_pick (int sample_data, int width, int start_bit)
{
  int out_data;
  unsigned int mask;

  mask = -1;
  mask = mask >> (WORD_WIDTH - width);
  out_data = sample_data;
  out_data = out_data >> start_bit;
  out_data = out_data & mask;

  return out_data;
}

wire_ack_cachehit_data30 = flag_pick(hoge[fusion_num], 1, WSR_DATA3);
のようにして利用するのですが、hoge[fusion_num]の値がわたらずに”0”の値がsample_dataの値になってしまいます。
値が渡されないのは何が問題なのでしょうか?


願:脱初心者  2006-08-22 02:10:08  No: 62791

環境は
Windows XP SP2
Visual Studio 2005
です。


夏みかん  2006-08-22 02:53:18  No: 62792

hogeはint型の配列ですか?
hoge[fusion_num]に0以外の値が入っていますか?
あと、次のように記述できますよ。

mask   = ~0;
mask >>= (WORD_WIDTH - width);
out_data = sample_data;
out_data >>= start_bit;
out_data  &= mask;


願:脱初心者  2006-08-22 03:02:12  No: 62793

早速のレスありがとうございます。
VisualCのデバッグを使って一連の処理を追ってみたのですが、
呼ぶ側でのhoge[fusion_num] (int型)、に値が入っており、ステップインで関数の引数を見てみるとゼロになっている(sample_dataがゼロの値を持っている)のです。
別のコーディング例を見せていただきどうもです。私の場合、オペランドはきちんと書かないといられない性分なので、労力を犠牲にしています。


願:脱初心者  2006-08-22 03:13:52  No: 62794

変数fusion_numに不正な値が入っていたのが原因でした。
自己解決(?)出来ました。
ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加