Компилятор C18 typedef enum размер данных - PullRequest
1 голос
/ 05 августа 2009

Я пытаюсь перенести код на компиляцию с помощью компилятора Microchip C18 для микроконтроллера PIC. Код включает в себя перечисления с присвоенными большими значениями (> 8-битные). Они не работают должным образом, указывая, что, например, 0x02 совпадает с 0x2002.

Как заставить перечисленные значения ссылаться на 16-битные значения?

Ответы [ 2 ]

1 голос
/ 02 сентября 2009

Я нашел проблему.

Для дальнейшего использования компилятор C18 НЕ будет выдавать переменные ИЛИ константы при выполнении математических операций, даже если это стандарт ANSI C. Это должно увеличить скорость при работе на 8-битных процессорах.

Чтобы обеспечить соответствие ANSI, используйте опцию компилятора "-Oi".

См. Стр. 92 руководства C18.

1 голос
/ 05 августа 2009

В заголовках DirectX каждое перечисление содержит значение FORCE_DWORD со значением 0xffffffff. Я предполагаю, что это в основном то, что вы хотите, это заставляет компилятор позволить перечислению иметь по крайней мере 32 бита. Поэтому попробуйте добавить FORCE_WORD со значением 0xffff.

Конечно, это не решит вашу проблему, если этот компилятор просто не поддерживает перечисления больше 8 бит.

...