Open System Services Porting Guide (G06.29+, H06.06+, J06.03+)

global (static) or local (automatic) variables to dynamic objects allocated from the heap or in
separate user-allocated segments.
Function Prototypes
The ISO/ANSI C innovation of function prototypes is one of the more important features added
to the C language. Using proper function prototypes in header files ensures that the invocation of
a function from a program is compatible with the formal definition of the function in terms of
numbers and types of arguments, and the type of the return value. In porting a Common C program
to the OSS environment, you have four options regarding the use of function prototypes:
1. Do nothing. The old code should compile.
2. Add function prototypes to just the headers. These prototypes cover all calls to global functions.
3. Add function prototypes to the headers, and start each source file with prototypes of its local
functions.
4. Change all function declarations and definitions to use prototypes (either by including the
header files, which contain prototypes, or by explicitly defining prototypes in source code
files).
HP recommends using option 4 to ensure that the program obeys the ISO/ANSI C rules. However,
all standard function prototypes have been added to the system header files for the OSS
environment, so there is a possibility that the program will compile correctly using these four options,
provided that the proper system header files are included in the program source files.
New programs should be written using the ISO/ANSI C standard. Programs written for the OSS
environment should also use the XPG4 specifications and the POSIX.1 and POSIX.2 standards to
maximize portability. Appropriate feature test macros help you check how well your program
complies with these standards. The C header files provided in the OSS environment contain
definitions required by the ISO/ANSI C, POSIX.1, and POSIX.2 standards, and by the XPG4
specifications. The visibility of these definitions is controlled with feature test macros.
If a program does not conform to the standard or specification controlled by a feature test macro
such as _XOPEN_SOURCE, _XOPEN_SOURCE_EXTENDED, or _TANDEM_SOURCE, the compiler
issues error and warning messages. Feature test macros are discussed in the following subsection
and in the C/C++ Programmer’s Guide.
Defined Symbols and Header Files
All of the standard header files defined in the ISO/ANSI C, POSIX.1, and POSIX.2 standards and
the XPG4 system interface specifications are supported in the OSS environment. In addition, the
following header files are provided to define the interfaces to HP extensions:
Function prototype declarations for the Guardian procedurescextdecs.h
Function prototype declarations of the interfaces for the Standard POSIX Threads library
(T1248). Use instead of pthread.h when using the Standard POSIX Threads library.
spthread.h
Function prototype declarations of the interfaces for the POSIX User Thread (PUT) Model
library. Use instead of spthread.h when using the POSIX User Thread (PUT) Model
library.
pthread.h
Embedded SQL/MP definitions and some SQL/MX data-type declarationssql.h
Declarations for the SQL/MX C/C++ preprocessor of the command line interface functions
and data structures (provided automatically by the preprocessor; #include is not
required)
sqlcli.h
TAL condition code macrostal.h
Function call definitions for HP extension functionstdmext.h
HP pragmas and togglestdmstd.h
OSS C Programming Considerations 117