On Mon, Feb 25, 2002 at 11:35:12PM -0700, M. Warner Losh wrote:
> In message: <[EMAIL PROTECTED]>
> Mike Makonnen <[EMAIL PROTECTED]> writes:
> : On Mon, 2002-02-25 at 20:59, M. Warner Losh wrote:
> : > I've fixed a few of the low hanging fruit, but I don't know how to get
> : > rid of warnings like:
> : >
> : > const char *foo = "blah";
> : > char *baz = foo;
> : >
> : > when I know they are safe.
> : Correct me if I'm wrong, but isn't the correct declaration:
> : const char foo = "blah";
> : char baz = "foo";
> You miss the point. First, there's no "" around foo. Second, what I
> quoted was boiled down from a bunch of macros and such. Third, the
> real example would be
> volatile int conspeed;
> int *foo = &conspeed;
> Where foo is only accessed before all other accesses to conspeed.
When it is too twisty to fix at the moment I use macros such as:
#define BOGUSLY_CAST_AWAY_VOLATILITY(T,P) ((T)(unsigned int)(P))
volatile int conspeed; int *foo =
BOGUSLY_CAST_AWAY_VOLATILITY(int *, &conspeed);
to surpress the warnings. You can easily redefine the macro to get
them back so together with the discouraging name you're not sweeping
things under the rug.
I don't think there is a GCC attribute to get around this differently.
PS - this is a quick example, please no one comment on the size of
unsigned int or using gcc typeof instead, etc.
Peter Dufault ([EMAIL PROTECTED]) Realtime development, Machine control,
HD Associates, Inc. Fail-Safe systems, Agency approval
To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message