Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 7 maja 2026, o 23:56


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 2 ] 
Autor Wiadomość
PostNapisane: 11 gru 2015, o 08:06 
Offline
Użytkownik

Dołączył(a): 05 gru 2013
Posty: 246
Pomógł: 0

Zacząłem ostatnio eksperymentować z mikrokontrolerami PIC32 (środowisko MPLABX i kompilator XC32). Powoli uruchamiam podstawowe peryferia i przenoszę część kodu, z którego korzystałem na AVR-ach. Wczoraj próbowałem między innymi uruchomić bibliotekę do parsowania komend AT, opartą na przykładzie z Green Booka. Okazało się jednak, że standardowa biblioteka libc dołączona do tego kompilatora nie zawiera wszystkich funkcji z pliku nagłówkowego string.h. Można to obejść zaznaczając we właściwościach projektu, że chcemy korzystać z "legacy libc", która zawiera pełen zestaw.
Jednak w miarę możliwości chciałbym, aby kod projektu był zgodny z aktualną wersją biblioteki. Dlatego chciałbym zapytać, jaki jest waszym zdaniem najlepszy sposób na zastąpienie tych funkcji. Jako alternatywę dla strtok_r() mógłbym wykorzystać sscanf(), ale może istnieje lepsze podejście? Co do strncasecmp(), to do głowy przychodzi mi tylko konwertowanie całego łańcucha do wersji pisanej wielkimi literami i późniejsze korzystanie ze standardowej strncmp(), która jest dostępna.

Ewentualnie można by też po prostu dołączyć własny kod wyżej wymienionych funkcji.

Zastanawia mnie tylko dlaczego te funkcje zostały usunięte w nowej wersji biblioteki. Zakładając, że nie była to pomyłka (lub złośliwość) ze strony Microchipa trzeba przyjąć, że musi istnieć jakaś zalecana alternatywa. Ktoś się domyśla co nią może być?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 gru 2015, o 10:26 
Offline
Użytkownik

Dołączył(a): 27 lis 2015
Posty: 36
Zbananowany użytkownik

Pomógł: 5

Złośliwość Microchipa powiadasz :-) Jasne... Microchip kierowany jest złośliwością :-)

http://lmgtfy.com/?q=strtok_r+implementation+in+c
http://lmgtfy.com/?q=strncasecmp+implementation+in+c

http://ww1.microchip.com/downloads/en/D ... 01686H.pdf strona 20.
Zapoznaj się z tym dokumentem. Będziesz miał mniej pytań i spekulacji...

Cytuj:
All of the MPLAB XC compilers conform to the ANSI X3.159-1989 Standard for pro- gramming languages (with the exception of the MPLAB XC8 compiler’s inability to allow recursion, as mentioned in the footnote). This is commonly called the C89 Standard. Some features from the later standard, C99, are also supported.


Zwróć uwagę na ->C89<-. strtok_r() dostępne jest od C90
strcasecmp() jest w standardzie IEEE Std 1003.1-2001 i w nagłówku strings.h (zwróć uwagę na "s") a to nie jest standard ANSI-C z którym deklaruje zgodność Microchip. To jest standard POSIX.1 czyli rodzina "okolice Unix'ów".

Tu masz jeszcze standardy http://port70.net/~nsz/c/



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 2 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO