C/C++ Programmer's Guide (G06.25+)

TNS C Compiler Messages
HP C/C++ Programmer’s Guide for NonStop Systems429301-008
20-42
Types of Compiler Messages
303
The TNS C compiler has converted a 32-bit pointer to a 16-bit pointer, resulting in the
loss of the segment portion of the address and leaving only the offset portion. This can
occur in two instances:
When the address of a location in extended memory is cast to a _near pointer.
When a non-C routine expecting a _near (16-bit) pointer argument is passed a
32-bit pointer.
For D4x releases, the default memory model is the large-memory model; for D3x
releases, the default model is the small-memory model. If the location pointed to by
the pointer is in extended memory, then after converting to 16 bits, that location is lost.
For a memory location to be 16-bit addressable, it should be in the user data segment
and not in the extended segment. Global/static scalars and all local variables are
automatically in the user data segment. To place global/static aggregates in the user
data segment, use the keyword _lowmem. Anything allocated on the heap is always in
extended memory and hence is not 16-bit addressable.
307
The user defined a C routine which was previously declared with a non-C language
attribute. (The routine was declared as having been written in COBOL, FORTRAN,
Pascal, or TAL.) The compiler disregards the language attribute and treats the function
as a regular C function.
308
The controlling expression for iteration is not a scalar type.
309
The compiler cannot identify the pragma directive. Check the pragma to ensure that it
is a valid directive.
Truncation of pointer size performed
Function definition overrides prior declaration of non-C
routine
controlling expression for iteration must have scalar
type
Passing unknown pragma directive