Страница 1 из 1

Не компилируется пример из AppNote

Добавлено: Вт фев 02, 2016 18:25:59
kolshik
Здравствуйте. Пытаюсь скомпиллировать проект, взятый из appnote AN643 microchip. Это ADPCM кодер/декодер, там есть такой код:
в adpcm.c

Код: Выделить всё

	/* Restore previous values of predicted sample and quantizer step
	   size index
	*/
	predsample = state.prevsample;
	index = state.previndex;
	step = StepSizeTable[index];
в adpcm.h

Код: Выделить всё

struct ADPCMState {
    signed long prevsample;        /* Predicted sample */
    int         previndex;         /* Index into step size table */
};
компиллятор XC16 выдает следующий отчет

Код: Выделить всё

Adpcm.c: In function 'ADPCMEncoder':
Adpcm.c:56:15: error: 'state' undeclared (first use in this function)
Adpcm.c:56:15: note: each undeclared identifier is reported only once for each function it appears in
Adpcm.c: In function 'ADPCMDecoder':
Adpcm.c:151:15: error: 'state' undeclared (first use in this function)
Я так понимаю, что это изъятие прошлых значений преобразований. До этого писал на asm, сейчас пытаюсь освоить С. Что делать не совсем понятно

Re: Не компилируется пример из AppNote

Добавлено: Вт фев 02, 2016 18:46:55
Pnjom-Penb
А не было ругани по поводу "Не найден adpcm.h"? Возможно, в проекте не прописаны пути к каталогам, в которых, в частности, лежит этот самый adpcm.h.
Есть еще вариант - переменная "state" объявлена и не в ADPCM.c, и не в ADPCM.h и этот файл не включен в состав проекта. Тогда ищите, где объявлена переменная "state".

Re: Не компилируется пример из AppNote

Добавлено: Ср фев 03, 2016 14:17:30
kolshik
adpcm.h прописан дважды, в майне и adpcm.с
State нигде не объявлен. Пробовал прописать adpcm.с:
ADPCMState state;
не помогло. Как ее объявить?

Re: Не компилируется пример из AppNote

Добавлено: Ср фев 03, 2016 21:31:37
Pnjom-Penb
kolshik писал(а):adpcm.h прописан дважды, в майне и adpcm.с
И как это меняет ситуацию?!
kolshik писал(а):Пробовал прописать adpcm.с: ADPCMState state; не помогло. Как ее объявить?
Так, чтобы компилятор не ругался. Хотя, в исходном коде она же была объявлена... куда запропастилась? :dont_know:

Re: Не компилируется пример из AppNote

Добавлено: Чт фев 04, 2016 11:47:49
Siarzhuk
kolshik писал(а):Пробовал прописать adpcm.с:
ADPCMState state;
не помогло. Как ее объявить?
Сю́ха-же, придётся полностью имя типа писать при объявлении:

Код: Выделить всё

struct ADPCMState state;