Open System Services Porting Guide (G06.29+, H06.06+, J06.03+)
Specifies list of search subvolumes for files in #include directivesSSV
Gives an error; all OSS programs are wide modelNOXMEM
These pragmas can be removed from the C or C++ source files if the source files are to be compiled
in the OSS environment.
Feature Test Macros
Feature test macros control the visibility of symbols. They determine which set of features is included
in header files. The following feature test macros can be used in the OSS environment. Which
symbols are defined by including a standard header file is determined as described in “Feature
Test Macros” (page 118).
The feature test macro _XOPEN_SOURCE is set by default in c89 and c99. The _XOPEN_SOURCE
macro is a superset of the _POSIX_SOURCE and _POSIX_C_SOURCE macros. The
_TANDEM_SOURCE feature test macro is used to make identifiers defined by HP visible.
Predefined Preprocessor Symbols
The native and TNS C compilers provide three predefined preprocessor symbols: __TANDEM,
__INT32, and __XMEM. (Note that there are two underscores at the beginning of these preprocessor
symbol names.)
You can use __TANDEM to increase the portability of your C programs. (Enclose system-dependent
source text in a #ifdef or #ifndef section to test for the existence of __TANDEM.)
__INT32 (for int defined as 32 bits) is defined by the C compiler when the WIDE pragma is
present; __XMEM (for large memory model) is defined by the C compiler when the XMEM pragma
is present.
The TNS/R and TNS/E native C compilers also provide the _TNS_R_TARGET and _TNS_E_TARGET
predefined preprocessor symbols, respectively, which distinguish them from the TNS C compiler.
Linking
The C run-time library routines are bound into an OSS program dynamically at run time unless the
-WBstatic option is specified, or the shared run-time library (SRL) or dynamic-link library (DLL)
cannot be found at compile time. For the native environments, certain C run-time library routines
that are bound into an OSS program can be found in the /usr/lib directory in the following
files; for the TNS environment, these files are in the /nonnative/usr/lib directory:
lex library routineslibl.a
yacc library routineslibyacc.a
The names and residence of other C libraries differ by platform. See the C/C++ Programmer’s
Guide for examples of sets of libraries that you might need to specify.
The TNS/R native c89 utility invokes either nld (default) or ld for linking. nld looks for a file
with the.srl suffix (for example, libc.srl) to resolve unresolved external references first; then
it looks for a file with the.a suffix (for example, libc.a). The.a library file is not used when
the.srl library file is found. The directories are searched in the order of /lib, /usr/lib, and
then /usr/local/lib.
ld works similarly, but first looks for a file with the .so suffix, then for a file with the .srl suffix,
then for a file with the .a suffix. The directories are searched in the order of /lib, /usr/lib,
/usr/local/lib, and then /G/SYSTEM/ZDLL.
The TNS/E native c89 utility and the c99 utility invokes eld for linking. eld searches first for a
file with the .so suffix, then for a file with the .a suffix. eld uses the same directory search order
as ld.
C Compiler Considerations for OSS Programs 157