[ekg2-devel] lists3 a sprawdzanie typów [było: r4089 - trunk/ekg: trunk/ekg/dynstuff.h]

Wiesław Ochmiński wiechu w wiechu.com
Pią, 11 Lip 2008, 23:58:24 CEST


On Fri, Jul 11, 2008 at 04:51:50PM +0100, Marcin Owsiany wrote:
> On Thu, Jul 10, 2008 at 12:41:09AM +0200, SVN commit wrote:
> > +#define LIST_ADD_SORTED2(list, data, comp)		list_add_sorted3((list_t *) (void *) list, (list_t) data, (void *) comp)
> 
> Czy rzutowanie przez (void *) nie oznacza w praktyce, że pozbawiamy się
> sprawdzania typu?

Wcześniejsza konstrukcja:

-#define LIST_ADD_SORTED2(list, data, comp)             list_add_sorted3((list_t *) list, (list_t) data, (void *) comp)

też nie sprawdzała żadnego typu tylko rzutowała list typu cokolwiek_t na
(list_t *). Konstrukcja w (void *) jest o tyle lepsza, że w czasie
kompilacji nie daje ostrzeżenia:

    warning: dereferencing type-punned pointer will break strict-aliasing rules


    Pozdrawiam,
	Wiechu
-- 
 Wiesław Ochmiński, Polska Północna, Malbork.


Więcej informacji o liście dyskusyjnej ekg2-devel