From: Maarten B. <sou...@ds...> - 2017-11-04 18:24:55
|
> Hello friends! > > On Saturday, November 4, 2017, Maarten Brock <sou...@ds...> > wrote: >> Hello, >> >> The pic16 library has a function memchrpgm() that throws a few warnings: >> >> string/memchrpgm.c:36: warning 196: pointer target lost const qualifier >> string/memchrpgm.c:45: warning 196: pointer target lost const qualifier >> string/memchrpgm.c:47: warning 196: pointer target lost const qualifier >> >> When I look at the source I see no reason for this warning. >> >> But I also don't understand what this function is supposed to do. >> > > From the name it seems to look for a character value in program space. > This would explain why not all bits are not being compared. Personally, > I would check to make sure the high bits(?) are zero, but if it is > typical to not pack bytes into the non-power-of-two program data space > then there is likely no need to do this. > >> __code void * >> memchrpgm (__code void *s, char c, size_t count) >> { >> if (!count) >> return NULL; //line 36 >> >> while ((*(__code char *)s != c) && count) >> { >> s = (__code char *)s + sizeof (__code char *); >> --count; >> } >> >> if (count) >> return s; //line 45 >> else >> return NULL; //line 47 >> } >> >> Is s supposed to be an array of count __code char pointers (strings in >> flash)? And then this function searches for the first one starting with >> c? >> That doesn't really resemble what a normal memchr() would do. >> >> May I suggest we just remove this one? >> > > https://en.m.wikipedia.org/wiki/Wikipedia:Chesterton%27s_fence > > Is there a comparable function that is memchr for program space? > > Cheers, > R0b0t1 Why would you need one? Is memchr itself not good enough? |