This is the mail archive of the
gcc-help@gcc.gnu.org
mailing list for the GCC project.
Re: how to cast away 'volatile'?
- From: Andrew Haley <aph at redhat dot com>
- To: Matthew Woehlke <mw_triad at users dot sourceforge dot net>
- Cc: gcc-help at gcc dot gnu dot org
- Date: Tue, 13 Mar 2007 09:41:17 +0000
- Subject: Re: how to cast away 'volatile'?
- References: <et47ie$c4m$1@sea.gmane.org>
Matthew Woehlke writes:
> I have a code snippet that looks roughly like this:
>
> extern void my_free(void* ptr);
>
> int foo()
> {
> volatile long * bar;
> ...
> my_free(bar);
> }
>
> This generates the warning 'cast discards qualifiers from pointer target
> type' at my_free() (gcc 3.4.3). Other than disabling the flag that
> generates the warning (in general I want these warnings!), how do I
> suppress this? my_free is of course a free() wrapper, i.e. I don't see
> any problems discarding the qualifier at this point. I already tried
> this, which seems like it used to work (I am moving the code from one
> project to another):
>
> my_free(void*)bar);
>
> ...and it doesn't help.
I think this is bad practice. You'd be far better advised to malloc()
the memory, keep a void* pointer to it, but cast to volatile long *
when volatile is actually required.
Andrew.