Я имею, столкнулся со следующим кодом и быть новичком C, я приехал сюда для Вашей справки.
Эта функция от c implmentation очереди.
Bool queuePut(Queue *q, char c)
{
void beep();
if (queueFull(q))
{
beep();
return false;
}
//do stuff
return true;
}
Так, я получаю странную ошибку с gcc на пустом звуковом сигнале (). Кто-то может объяснить меня, что это, объявление является функцией в функции. Или действительно ли это - пустой звуковой сигнал () просто неуместный? Мне дали этот код и всегда существует возможность, что это не корректно.
Править: Ошибка я добираюсь:
c:/djgpp/tmp/src/ccrjtmBh.o:queue.c:(.text+0x50): undefined reference to
'_beep'
collect 2: ld returned 1 exit status.
Действительно ли это - связывающаяся ошибка?
Скорее всего, у вас ошибка связывания, потому что:
void beep();
- это прототип функции, которая должна быть определена где-то еще. В C вы не можете определить функцию внутри другой. Пожалуйста, опишите ошибку, которую вы получаете.
Как отмечали другие, здесь происходит то, что ваша функция объявляет прототип для функции с именем "beep" . Чтобы обойти это, убедитесь, что звуковой сигнал функции включен в вашу компиляцию или компоновку.
Первый шаг - убедиться, что вы компилируете все полученные файлы и связываете все поддерживаемые .lib
Если это не сработает, вы можете просто добавить метод самостоятельно;)
void beep() {
printf ("beep\n");
}
Это необычно, но законно. Ошибка, которую вы видите, может быть связана с компоновщиком, если нигде не определено фактическое значение beep ()
. Можете ли вы опубликовать фактическую ошибку, которую вы получаете?