C/C++ Programmer's Guide (G06.27+, H06.08+, J06.03+)
Usage Guidelines
• The PUSH pragma can be entered only in the source text.
• Only the values EXTERN_DATA, FIELDALIGN, LIST, OVERFLOW_TRAPS, REFALIGNED, and
WARN can be used as operands to the PUSH pragma. The use of any other pragma as an
operand is flagged as an error.
• Each PUSH pragma has a separate stack, each of which holds up to 32 values.
REFALIGNED
The REFALIGNED pragma specifies the default reference alignment for pointers in native C and
C++ programs.
REFALIGNED value [ pointer-name-list ]
value:
{ 2 | 8 }
pointer-name-list:
pointer-name [ pointer-name-list ]
pointer-name:
{ type-name | variable-name }
The pragma default settings are:
SYSTYPE OSSSYSTYPE GUARDIAN
N.A.N.A.TNS C compiler
N.A.N.A.G-series TNS c89 utility
REFALIGNED 8REFALIGNED 8TNS/R native C and C++ compilers
REFALIGNED 8REFALIGNED 8Native c89 and c99 utilities
REFALIGNED 8REFALIGNED 8TNS/E native C and C++ compilers
Usage Guidelines
• The REFALIGNED pragma can be entered on the compiler RUN command line or in the source
text, or it can be specified with the -Wrefalign flag of the c89 or the c99 utility.
• In native mode, if you specify REFALIGNED on the command line, you cannot include a
pointer-name-list. A list is permitted only when the pragma appears in the source text.
• The default code generation for pointer dereferencing operations (REFALIGNED 8) expects
the pointer to contain an address that satisfies the alignment requirements of the object being
pointed to.
For example, a 4-byte object should have an address that is a multiple of 4. If the object is at
an address that does not satisfy its alignment requirements, the default code generation causes
a compatibility trap. To avoid this, specify REFALIGNED 2 on the pointer to the object. This
results in code generation that assumes the dereferenced object is not properly aligned and
compensates for the misalignment.
• Pragma REFALIGNED without a pointer-name-list specifies the default alignment for
the entire compilation and can be used in the command line or in the source text.
• A global REFALIGNED pragma affects only pointers that do not point to classes, structs, or
unions.
REFALIGNED 231