Gast
#473904
Hallo zusammen,
was ist der unterschied zwischen dem Aufruf
if (strncmp_P(File_Name,PSTR("cam.jpg"),7) == 0)
und
if ( memcmp(File_Name, "cam.jpg",7) == 0)
|
Anzeige
|
strncmp_P <-> memcpy
Gast
#473904
Hallo zusammen,
was ist der unterschied zwischen dem Aufruf
if (strncmp_P(File_Name,PSTR("cam.jpg"),7) == 0)
und
if ( memcmp(File_Name, "cam.jpg",7) == 0)
1. dass "cam.jpg" im ersten Fall ROM braucht, im zweiten Fall ROM und RAM (ich nehme an, das ist AVR-GCC/avr-libc hier). 2. dass im ersten Fall der Vergleich abgebrochen wird, wenn File_Name ein '\0' irgendwo bereits vor dem 7. Zeichen hat, während im zweiten Fall weiter irgendwo im Speicher gelesen werden könnte. memcmp vergleicht die angegebene Anzahl Bytes im Speicher, strncmp vergleicht maximal die angegebene Anzahl Zeichen zweier Strings miteinander und bricht bei Stringende auch vorher ab. Obendrein greift strncmp_P als Spezial-Konstrukt des avr-gcc auf Daten im Programmspeicher (dem Flash) zu - was aufgrund der Harvard-Architektur des AVR anders codiert werden muss als bei von-Neumann-Prozessoren. Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|