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