Interfacing to C with GNAT can use one of two approaches:
Interfaces.C
may be used.
Pragma Convention C
maybe applied to Ada types, but mostly has no
effect, since this is the default. The following table shows the
correspondence between Ada scalar types and the corresponding C types.
Integer
int
Short_Integer
short
Short_Short_Integer
signed char
Long_Integer
long
Long_Long_Integer
long long
Short_Float
float
Float
float
Long_Float
double
Long_Long_Float
Convention C
is specified, which causes them to have int
length. Without pragma Convention C
, Ada enumeration types map to
8, 16, or 32 bits (i.e. C types signed char, short, int respectively)
depending on the number of values passed. This is the only case in which
pragma Convention C
affects the representation of an Ada type.
type'Size
value in Ada.