The C–Pascal Interface
105
6
Records and Structures
In most cases, a Pascal record describes the same objects as its C structure
equivalent, provided that the components have compatible types and are
declared in the same order. The compatibility of the types depends mostly on
size and alignment. For more information on size and alignments of simple
components, see “Compatibility of Types for C and Pascal” on page 90.
By default, the alignment of a record is always four bytes and the size of a
record is always a multiple of four bytes. However, when you use
-calign
in
compiling the Pascal code, the size and alignment of the Pascal record matches
the size and alignment of the equivalent C structure.
A Pascal record of an integer and a character string matches a C structure of
the same constructs, as follows:
The commands to compile and
execute
ChrCAVar.p
and
ChrCAVarMain.c
hostname% pc -c -calign ChrCAVar.p
hostname% cc ChrCAVar.o ChrCAVarMain.c -lpc
hostname% a.out
This is a string
The Pascal procedure,
StruChr.p
. It is safer for the
Pascal procedure to explicitly
provide the null byte and include
it in the count before the string is
passed to C.
type
TLenStr = record
nbytes: integer;
chrstr: array [0..24] of char
end;
procedure StruChr(var v: TLenStr);
begin
v.NBytes := 14;
v.ChrStr := 'St. Petersburg' + chr(0);
end; { StruChr }
Содержание SunSoft Pascal 4.0
Страница 14: ...xiv Pascal 4 0 User s Guide ...
Страница 16: ...xvi Pascal 4 0 User s Guide ...
Страница 30: ...6 Pascal 4 0 User s Guide 1 ...
Страница 160: ...136 Pascal 4 0 User s Guide 6 ...
Страница 268: ...244 Pascal 4 0 User s Guide 11 ...
Страница 320: ...296 Pascal 4 0 User s Guide B ...
Страница 331: ...Index 307 ...
Страница 333: ......