--- layout: fc_discuss_archives title: Message 12 from Frama-C-discuss on September 2015 ---
On Sun, Sep 06, 2015 at 02:24:35PM +0200, David MENTRà wrote: > Le 2015-09-06 14:18, David MENTRà a écrit : > >Possible explanation: memset() expects char and giving to it violate > >this assumption. > > ... and giving to it integer violates this assumption. > > > >You have some warnings. I cannot say if they are harmful or not. > > > >kurt-memset.c:9:[wp] warning: Cast with incompatible pointers types > >(source: b*) (target: sint8*) > >kurt-memset.c:7:[wp] warning: Cast with incompatible pointers types > >(source: sint32*) (target: sint8*) > > Apparently, it could be harmful: > > https://lists.gforge.inria.fr/pipermail/frama-c-discuss/2014-June/004465.html > > My suggestion might not be that good. :-) Well, memset() takes a void *. The C standard also allows you to cast that to a char *, which is probably what memset() will use internally since you can't use void * directly. So it seems to me that memset is always problematic for the Typed+cast model. And I can someone understand it that it has problems with it. It would of course be nice that it could deal with it. But the code I'm looking at seems to like to use memset() on structs so that not all individual members of a struct need to be set to 0 but that you can do it with 1 call. Kurt