私が作業していたキューコードが少しあります。私はグローバルintを使用してキューのサイズを追跡しようとしていました。cのグローバルカウンタが期待どおりに動作しない
#define MAX 100
int size=0;
int gEnqueue=gDequeue=0;
int enqueue()
{
gEnqueue++;
if(size == MAX)
return QUEUE_FULL;
/* snip the actual queue handling */
size++;
return 0;
}
int dequeue()
{
gDequeue++;
if(!size)
return QUEUE_EMPTY;
/* snip actual queue handling */
if(size)
size--;
return 0;
}
さらに多くのコードがありますが、投稿するにはあまりにも多くのコードがあります。
何が起こっているのかは、私が設定した最大値に突入することです。両方の関数は偶数回呼び出されます。キューをダンプすると、その中に3つのアイテムしかないことがわかります。
この問題の原因は何ですか?
編集#1:コード例では、私は実際にこれは、ねじではありません
をコード化されたものと一致しました。
編集#2:私はばかだと仮定するのではなく、これをしたはずです。 呼び出しがエンキュー()とデキュー()にさえ間違っていました。
実際のメトリックは推測ではありません。
MAXはどのように定義されていますか? –
私が知る限り、もっとコードが必要です。 (私は何かを見逃していないことを願っています:3) –
ifブロックをスコープする '{}'の不足を心配しています。作業コードに減分を残すことができますか? – dmckee