C/C++ Programmer's Guide (G06.27+, H06.08+, J06.03+)

An internal identifier or macro name can have 63 significant characters.
An external identifier can have 31 significant initial characters.
A single translation unit can have at least 4095 external identifiers.
A block can have at least 511 identifiers declared with block scope.
A single translation unit can have at least 127 macro identifiers defined simultaneously.
A macro definition can have at least 127 parameters and a macro invocation at least 31
arguments.
A logical source line can have at least 4095 characters.
A string literal or wide string literal can have at least 4095 characters (after string
concatenation).
An object can consist of at least 32767 bytes.
A constant or variable can consist of at least 65535 bytes.
#included files can have 15 nested levels.
A switch statement can have 1023 case labels (exclusing any nested switch statements).
A single struct or union can have at least 1023 members.
A switch statement can have at least 1023 case labels (excluding any nested switch
statements).
A single struct or union can have at least 1023 members.
A single enumeration can have at least 1024 enumeration constants.
A single structure declaration can have at least 63 levels of nested structure or union definitions.
Implementation-Defined Behavior of TNS C
The ISO standard for C allows implementations to vary in specific instances. This subsection
describes the implementation-defined behavior of TNS C. This subsection corresponds to Annex
G.3 of the ISO C standard or Appendix F of the ANSI C standard.
G.3.1 Translation
Each nonempty sequence of white-space characters, other than newline, is retained.
The form of the diagnostic messages displayed by the TNS compiler is such that the source line is
displayed first, followed by a line of the form: file name line diagnostic-type: diagnostic message.
For example:
100 foo ();
**** \prune.$data.test.testc 100 Warning 95:
prototype function -declaration not in scope: foo
There are different classes of messages. They are:
ERROR
WARNING
The translator return status code for each class of message is:
0 = Normal, voluntary termination with no errors or warnings.
1 = Normal, voluntary termination with warning diagnostics.
2 = Abnormal, voluntary termination with warning diagnostics.
The level of diagnostic can be controlled. Control takes these form:
For ERROR, the ERRORS pragma directs the compiler to terminate compilation if it detects
more than a specified number of errors. If the ERRORS pragma is not used, the compiler
completes a compilation regardless of the number of errors it diagnoses.
For WARNING, the WARN pragma controls the generation of all or selected warning messages.
The WARN pragma enables the compiler to generate all or a selected set of warning messages,
406 HP C Implementation-Defined Behavior