>>204

>>202のコードだけ見ると、意味があるとは思えないけどね。
意味があるとしたら、
 ・ROM/RAMの容量、もしくはスピードの制約が厳しい。
 ・ほかの関数からアクセスする必要がある。
という両方の条件が満たされる場合だけだろ。

ある程度コーディング規約がしっかりしてるとこなら、
 ・グローバル変数、ファイル全体スコープのstatic変数はは可能な限り使わない
 ・ファイル全体スコープの場合は「s_」、グローバルの場合は「g_」の接頭辞をつける
という規約になってると思うが。

それに、
void UpdateKeyValues(int rawKey)
{
  int prevRawKey = rawKeyState;
  rawKeyState = rawKey;

  int stable = ~(prevRawKey ^ rawKey);
  int diff = filteredKeyState ^ rawKey;
  int altered = diff & stable;

  filteredKeyState ^= altered;
  onEdgeKey = altered & filteredKeyState;
}
↑このコード、コンパイルが通らない場合も多いだろww