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/

Reply via email to