HP 3000 Manuals

Porting between HP C and Domain/C [ HP C Programmer's Guide ] MPE/iX 5.0 Documentation


HP C Programmer's Guide

Porting between HP C and Domain/C 

All HP-UX and Domain computers have ANSI C compilers.  Strictly
standard-compliant programs are highly portable between all these
architectures.

The following Domain/C extensions are not supported on HP-UX in
compatibility mode and in most cases, are not supported in ANSI mode
either:

   *   Reference variables.

   *   The following preprocessor directives:  #attribute, #options,
       #section, #module, #debug, #eject, #list, #nolist, and #systype.

   *   std_$call.

   *   __attribute modifier and __options specifier.

   *   systype predefined macro.

   *   _BFMT__COFF predefined macro.

   *   _ISP__M68K predefined macro.

   *   _ISP__A88K predefined macro.

   *   _ISP__PA_RISC predefined macro.

   *   Partial specification of struct and union members.

Function prototypes, struct and union initialization, and the predefined
names __DATE__ and __TIME__, all of which are ANSI C features, are
supported on HP-UX in ANSI mode.

Compile line options are different between HP-UX C and Domain/C. Check
the respective cc(1) page for complete descriptions.

There are other differences between HP-UX C and Domain/C:

   *   Alignment:  All Domain workstations have hardware or software
       assists to handle misaligned data.  Programs that rely on these
       features will not run on the Series 800.

   *   Floating-point exceptions:  All Domain workstations, by default,
       enable invalid operation, divide by zero, and overflow exception
       traps.  Programs that rely on fault detection, for instance, to
       enter a fault handler or to terminate execution on encountering a
       fault, will ordinarily generate useless output on HP-UX. However,
       the PA1.1 math library for the Series 700/800 provides a function
       fpsetdefaults(3M), which enables these traps and therefore allows
       such programs to run as expected.  For more information, see the
       HP-UX Floating-Point Guide.

   *   struct layout and alignment, especially bit-field, is different.

   *   float data type:  Domain/C optimizes a statement all of whose
       atoms are float or floating-point constants, to be evaluated in
       float rather than double.

   *   register declarations:  Domain/C completely ignores register
       declarations, except to ensure that language constraints are not
       violated.

   *   Include file search rules are different.

   *   Programs that rely on undefined behaviors, for instance, the order
       of expression evaluation and the application of unsequenced
       side-effects, will probably execute differently.



MPE/iX 5.0 Documentation