Interfacing to C with GNAT can use one of two approaches:
Interfaces.Cmay be used.
Convention C may be 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.
|Ada Type||C Type|
|This is the longest floating-point type supported by the hardware.|
Additionally, there are the following general correspondences between Ada and C types:
Convention Cis specified, which causes them to have a length of 32 bits, except for boolean types which map to C99
booland for which the length is 8 bits. Without pragma
Convention C, Ada enumeration types map to 8, 16, or 32 bits (i.e., C types
int, respectively) depending on the number of values passed. This is the only case in which pragma
Convention Caffects the representation of an Ada type.
type'Sizevalue in Ada.