6

The Pascal main program,

StruChrMain.p

program StruChrMain(output); type

TVarLenStr = record nbytes: integer;

a: array [0..25] of char

end;

var

vls: TVarLenStr;

i: integer;

procedure StruChr(var vls: TVarLenStr); external c;

begin StruChr(vls); write(' string=''');

for i := 0 to vls.nbytes - 1 do write(vls.a[i]);

writeln('''');

writeln(' length = ', vls.nbytes) end. { StruChrMain }

The commands to compile and execute StruChr.c and StruChrMain.p

hostname%

cc

-c StruChr.c

hostname%

pc

-calign StruChr.o StruChrMain.p

hostname%

a.out

string='

strvar'

length=

 

6

 

 

 

Variant Records

C equivalents of variant records can sometimes be constructed, although there is some variation with the architecture, and sometimes you have to adjust the alignment.

The C–Pascal Interface

125