declaring C enum types
Fergus Henderson
fjh at cs.mu.OZ.AU
Thu Oct 17 09:46:21 EDT 2002
On 17-Oct-2002, Simon Marlow <simonmar at microsoft.com> wrote:
>
> Yes. The C99 spec says (sec. 6.7.2.1):
>
> [#4] Each enumerated type shall be compatible with an
> integer type. The choice of type is
> implementation-defined but shall be capable of
> representing the values of all the members of the
> enumeration. [...]
>
> If a C compiler can choose any integer type, then it seems to me that
> mixing code from two C compilers on the same platform might not work.
> Hmmm.
The choice of representation of enums is part of the C ABI.
Two different compilers on the same platform can use different C ABIs,
so yes, mixing code from such compilers might not work.
However, enums are the least of your problems there.
Compilers also need to cooperate about object file format, name mangling,
the usage of registers and stack, the sizes and representations of the
basic types such as `int', struct padding, alignment, and so on.
If two C compilers both support the same C ABI, then it is possible
to mix code between them.
--
Fergus Henderson <fjh at cs.mu.oz.au> | "I have always known that the pursuit
The University of Melbourne | of excellence is a lethal habit"
WWW: <http://www.cs.mu.oz.au/~fjh> | -- the last words of T. S. Garp.
More information about the FFI
mailing list