C/C++ Programmer's Guide (G06.27+, H06.03+)
Table Of Contents
- What’s New in This Manual
- About This Guide
- 1 Introduction to HP C and C++ for NonStop Systems
- TNS C Language System
- TNS C++ Language System
- TNS/R Native C and C++ Language System
- TNS/R Native C Compiler
- TNS/R Native C++ Compiler
- TNS/R Native C Run-Time Library
- C++ Run-Time Library and Standard C++ Library
- TNS/R Native Linkers (nld and ld Utilities)
- Inspect Symbolic Debugger
- Visual Inspect Symbolic Debugger
- TNS/R Native Object File Tool (noft Utility)
- NonStop SQL/MP Compiler and NonStop SQL/MX Compiler
- TNS/R Native C and C++ Migration Tool
- Features of TNS/R Native C and C++
- TNS/E Native C and C++ Language System
- TNS/E Native C Compiler
- TNS/E Native C++ Compiler
- TNS/E Native C Run-Time Library
- C++ Run-Time Library and Standard C++ Library
- TNS/E Native Linker (eld Utility)
- Native Inspect Symbolic Debugger
- Visual Inspect Symbolic Debugger
- TNS/E Native Object File Tool (enoft Utility)
- NonStop SQL/MP Compiler and NonStop SQL/MX Compiler
- TNS/E Native C and C++ Migration Tool
- Features of TNS/E Native C and C++
- Writing Portable Programs
- Porting Programs to HP C and C++ for NonStop Systems
- Porting Without Data Alignment Problems
- Guardian and OSS Environment Interoperability
- 2 C and C++ Extensions
- 3 Interfacing to Guardian Procedures and OSS Functions
- 4 Using the C Run-Time Library
- 5 Using the Standard C++ Library
- 6 Accessing Middleware Using HP C and C++ for NonStop Systems
- 7 Mixed-Language Programming for TNS Programs
- 8 Mixed-Language Programming for TNS/R and TNS/E Native Programs
- 9 System-Level Programming
- 10 Converting C-Series TNS Programs to Use the Current TNS Compiler
- 11 Migrating Programs to TNS/R or TNS/E Native Mode
- 12 Preprocessor Directives and Macros
- 13 Compiler Pragmas
- ALLOW_CPLUSPLUS_COMMENTS
- ALLOW_EXTERN_EXPLICIT_INSTANTIATION
- ANSICOMPLY
- ANSISTREAMS
- BUILD_NEUTRAL_LIBRARY
- CALL_SHARED
- CHECK
- COLUMNS
- CPATHEQ
- CPPONLY
- CSADDR
- ELD(arg)
- ENV
- ERRORFILE
- ERRORS
- EXTENSIONS
- EXTERN_DATA
- FIELDALIGN
- FORCE_VTBL
- FORCE_STATIC_TYPEINFO
- FORCE_STATIC_VTBL
- FUNCTION
- HEADERS
- HEAP
- HIGHPIN
- HIGHREQUESTERS
- ICODE
- IEEE_FLOAT
- INLINE
- INLINE_COMPILER_GENERATED_FUNCTIONS
- INLINE_LIMIT
- INLINE_STRING_LITERALS
- INNERLIST
- INSPECT
- KR
- LARGESYM
- LD(arg)
- LINES
- LINKFILE
- LIST
- LMAP
- MAP
- MAPINCLUDE
- MAXALIGN
- MIGRATION_CHECK
- NEST
- NEUTRAL
- NLD(arg)
- NOEXCEPTIONS
- NON_SHARED
- OLDCALLS
- OLIMIT
- ONCE
- OPTFILE
- OPTIMIZE
- OVERFLOW_TRAPS
- PAGE
- POOL_STRING_LITERALS
- POP
- PUSH
- REFALIGNED
- REMARKS
- RUNNABLE
- RUNNAMED
- RVU
- SAVEABEND
- SEARCH
- SECTION
- SHARED
- SQL
- SQLMEM
- SRL
- SRLExportClassMembers
- SRLExports
- SRLName
- SSV
- STDFILES
- STRICT
- SUPPRESS
- SUPPRESS_VTBL
- SYMBOLS
- SYNTAX
- SYSTYPE
- TANDEM_FLOAT
- TRIGRAPH
- VERSION1
- VERSION2
- VERSION3
- WARN
- WIDE
- XMEM
- XVAR
- 14 Compiling, Binding, and Accelerating TNS C Programs
- 15 Compiling, Binding, and Accelerating TNS C++ Programs
- 16 Compiling and Linking TNS/R Native C and C++ Programs
- 17 Compiling and Linking TNS/E Native C and C++ Programs
- 18 Using ETK and Native C/C++ Cross Compiler on the PC
- 19 Running and Debugging C and C++ Programs
- 20 TNS C Compiler Messages
- 21 Native C and C++ Compiler Messages
- 22 Run-Time Messages
- 23 Handling TNS Data Alignment
- A HP C Implementation-Defined Behavior
- Implementation-Defined Behavior of Native C
- G.3.1 Translation
- G.3.2 Environment
- G.3.3 Identifiers
- G.3.4 Characters
- G.3.5 Integers
- G.3.6 Floating Point
- G.3.7 Arrays and Pointers
- G.3.8 Registers
- G.3.9 Structures, Unions, Enumerations, and Bit Fields
- G.3.10 Qualifiers
- G.3.11 Declarators
- G.3.12 Statements
- G.3.13 Preprocessing Directives
- G.3.14 Library Functions
- G.4 Locale Behavior
- G.5 Common Extensions
- Translation Limits for Native C Compilers
- Implementation-Defined Behavior of TNS C
- G.3.1 Translation
- G.3.2 Environment
- G.3.3 Identifiers
- G.3.4 Characters
- G.3.5 Integers
- G.3.6 Floating Point
- G.3.7 Arrays and Pointers
- G.3.8 Registers
- G.3.9 Structures, Unions, Enumerations and Bit Fields
- G.3.10 Qualifiers
- G.3.11 Declarators
- G.3.12 Statements
- G.3.13 Preprocessing Directives
- G.3.14 Library Functions
- G.4 Locale Behavior
- G.5 Common Extensions
- Implementation-Defined Behavior of Native C
- B TNS C++ ImplementationDefined Behavior
- C ASCII Character Set
- D Data Type Correspondence
- E Features and Keywords of Version2NativeC++
- F MIGRATION_CHECK Messages
- Glossary
- Index
Compiling, Binding, and Accelerating TNS C++
Programs
HP C/C++ Programmer’s Guide for NonStop Systems—429301-010
15-17
Working in the G-Series OSS Environment
Input Files
Input files to TNS c89 can be:
•
C++ language source files
•
TNS object files generated by c89 -c
•
Libraries of TNS object files produced by the ar utility
•
Libraries of TNS object files produced by Binder
•
Executable TNS object files produced by Binder
Binding
The -lc and -lC operands specify these libraries:
In the absence of options that inhibit the invocation of the Binder, such as -c or
-Wnobind, the TNS c89 utility causes the equivalent of a -lc operand to be passed
to the Binder as the last -l operand, causing the standard TNS C library to be
searched after all other object files and libraries are loaded.
If one or more of the file operands are C++ source files, TNS c89 causes the
equivalent of a -lC operand to be passed to the Binder ahead of -lc. However, if a
separate binding process is invoked to bind C++ TNS object files, you are required to
specify -lC as one of the file operands ahead of -lc. If you do not specify -lC ahead
of -lc only the standard TNS C run-time library is used by the Binder.
Examples
Examples 1 and 2 shows how to compile a C++ program using the TNS c89 utility.
Example 3 shows how to perform some of the compilation steps without performing all
of them.
1. This example preprocesses hello.C with Cprep, translates it with Cfront,
compiles it with TNS C, and then binds it with the Binder to create an executable
file named a.out.
c89 hello.C
2. This example causes the same compilation steps to occur as in the previous
example except that the resulting executable file is named hello.
c89 -o hello hello.C
-lc This library contains all library functions specified in the POSIX.1
specification, except for those functions listed as residing in math.h.
-lC This is the TNS C++ run-time library. It should be bound before the standard
TNS C run-time library.