
Re: Проблем с типовете на C (pic C18)
Намерих проблема. Оказа се, че MEM_MODEL е дефиниран като far в два файла - string.h и в stdio.h. за да го промениш трябва да промениш системните header файлове. Разбира се може винаги да ползваш far указатели, но е идиотско когато контролера има само 16к (по-малко от 64к).
Ако някой още се чуди как да поправи този warning:
1. смяна на модела на near:
1.1 в stdio.h и string.h се променя:
1.2 дефинира се в съответната програма (най-добре в config.h, който се include-ва преди каквото и да е друго във всеки C файл)
#define MEM_MODEL near
2. Ако се ползва far model
добавя се -mL към опциите на компилатора (или от Build Options, tab MPLAB C18, Category: Memory Model се избира Large Code)
3. Ако се наложи да се ползват и near, и far каст-а от near към far e нещо подобно:
strcpypgm2ram(s, (const rom far char *)"a string");