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