У меня есть код очереди, над которым я работал. Я пытался использовать глобальный 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: сделал пример кода матч, что я на самом деле кодированный
Это не имеет резьбы.
edit # 2: Я идиот и должен был сделать это вместо того, чтобы предполагать. Я ошибался, когда звонки были даже в очереди() и dequeue().
Примечание для себя, используйте реальные показатели, не догадываясь.
Как определяется MAX? –
Насколько я могу судить, нам нужен еще код. (Я надеюсь, что я не пропустил ничего очевидного: 3) –
Я беспокоюсь из-за отсутствия '{}' определения областей if. Не могли бы вы оставить декремент в рабочем коде? – dmckee