7

Compatibility of Types for C++ and Pascal

Table 6-1 and Table 6-2 on page 90 list the default sizes and alignments of compatible types for C and Pascal. They apply to C++ as well.

C++ Name Encoding

To implement function overloading and type-safe linkage, the C++ compiler normally appends type information to the function names. To prevent the C++ compiler from doing so, and to allow Pascal to call a C++ function, declare the C++ function with the extern "C" language construct. One common way to do this is in the declaration of a function, like this:

extern "C" void f (int);

...

void f (int) { /* ...body of f... */ }

For brevity, you can also combine extern "C" with the definition of the function, as in:

extern "C" void f (int) { /* ...body of f... */ }

Procedure Calls: C++–Pascal

Following are examples that illustrate how a C++ main program calls a Pascal procedure. Included in each example are the Pascal procedure, the C++ main program, and the commands to compile and execute the final program.

The Pascal procedure, Samp,

procedure Samp (var i: integer; var r: real);

in the file, Samp.p

 

 

begin

 

i := 7;

 

r := 3.14;

 

end

 

 

138

Pascal 4.0 User’s Guide