const void *a = something;
void *b = a;
returns a warning:
warning: initialization discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]
Is it safe (well defined behaviour) to copy a pointer to const
to a pointer to non const
via memcpy
in order to avoid warnings?
/* Linear search */
void *vector_lsearch(const void *key, const void *base, int (*comp)(const void *, const void *))
{
const struct vector *vector = CONST_VECTOR(base);
void *cast[1];
void *data;
/* Skip const to non const warning */
data = *(void **)memcpy(cast, &base, sizeof base);
for (size_t item = 0; item < vector->size; item++)
{
if (comp(data, key) == 0)
{
return data;
}
data = (unsigned char *)data + vector->szof;
}
return NULL;
}