Incompatibilities – HP SunSoft Pascal 4.0 User Manual
Page 116
92
Pascal 4.0 User’s Guide
6
Array Indexes
Pascal array indexes can start at any integer; C array indexes always start at
zero.
Aggregate Types
Aggregate types include arrays, varying arrays, sets, strings, alphas, records,
and variant records.
Pascal aggregate types may require alignment and layout adjustment to match
C unions, structures, and arrays. Pascal aggregate types can be any of the
following: arrays, varying arrays, sets, strings, alphas, records, or variant
records.
However, you can use the
-calign
option to eliminate some of these
differences. With
-calign
, the following assumptions are made:
•
Pascal records have the same data layout as C structures.
•
Arrays have the same data layout in both languages. However, if you use
the
-xl
option in addition to
-calign
,
boolean
arrays with an odd
number of elements are different.
•
Pascal variants are the same as C unions.
Incompatibilities
This section describes the incompatibilities between C and Pascal types.
Enumerated Types
C enumerated types are incompatible with Pascal enumerated types. Pascal
enumerated types are represented internally by sequences of integral values
starting with 0. Storage is allocated for a variable of an enumerated type as if
the type was a subrange of integer. For example, an enumerated type of fewer
than 128 elements is treated as 0..127, which, according to the rules above, is
equivalent to a
char
in C.
C enumerated types are allocated a full word and can take on arbitrary integer
values.