I have a position union:
typedef struct
{
UInt8 type;
UInt8 datum;
union
{
struct
{
Int16 altitude;
UInt32 northing;
UInt32 easting;
Char zone;
UInt8 gore;
} grid;
struct
{
Int16 altitude;
UInt32 latitude;
UInt32 longitude;
Boolean south;
Boolean east;
} latLon;
Int16 altitude;
Int16 depth;
struct
{
float x, y, z;
} absolute;
struct
{
Int16 altitude;
UInt16 unused;
float x, y;
} spot;
};
} Position;
I use the grid case. Both zone and gore contain 0xff (as seen in debugger).
I have a symbol:
#define Undefined 0xff
yet, when I hit
if ( position->grid.zone == Undefined )
StrPrintF( string, "X %ld%sY %ld",
( position->grid.easting + 50 ) / 100, separator,
( position->grid.northing + 50 ) / 100 );
the StrPrintF is skipped. Here's the assembler:
00000214: 102A 000C move.b 12(a2),d0
00000218: 4880 ext.w d0
0000021A: 0C40 00FF cmpi.w #255,d0
0000021E: 6632 bne.s *+52 ; 0x00000252
Go figure.
Luc Le Blanc
--
For information on using the ACCESS Developer Forums, or to unsubscribe, please
see http://www.access-company.com/developers/forums/