Re: WIP: guc enums - Mailing list pgsql-patches

From Heikki Linnakangas
Subject Re: WIP: guc enums
Date
Msg-id 47CE6B04.6020708@enterprisedb.com
Whole thread Raw
In response to Re: WIP: guc enums  (Tom Lane <tgl@sss.pgh.pa.us>)
Responses Re: WIP: guc enums  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-patches
Tom Lane wrote:
> "Heikki Linnakangas" <heikki@enterprisedb.com> writes:
>> Magnus Hagander wrote:
>>> On my platform (linux x86) it works fine when I just cast this to (int *),
>>> but I'm unsure if that's going to be safe on other platforms. I had some
>>> indication that it's probably not?
>
>> No, I don't think that's safe. Some googleing (*) suggests that the
>> compiler is free to choose any integer type for an enum.
>
> Yeah, it's absolutely not safe.
>
> What I'd suggest is declaring the actual variable as int.  You can still
> use an enum typedef to declare the values, and just avert your eyes
> when you have to cast the enum to int or vice versa.  (This is legal per
> C spec, so you won't introduce any portability issues when you do it.)

That's pretty much the same as int variable and #defined constants. You
lose compiler checks, like assigning from one enum type to another, and
the "enumeration value ‘FOOBAR’ not handled in switch" warning.

--
   Heikki Linnakangas
   EnterpriseDB   http://www.enterprisedb.com

pgsql-patches by date:

Previous
From: Julius Stroffek
Date:
Subject: Sun Studio on Linux spinlock patch
Next
From: Magnus Hagander
Date:
Subject: Re: WIP: guc enums