[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Support #ATY-776694]: [udunits] Compiler-Error in udunits2 with compatibility include-file of udunits



Heiko,

> I tried to compile a c++-program which uses the old udunits package
> against the new udunits2 package with the compatible udunits.h.
> 
> I got the following compiler error with gcc 4.1.2 (Debian 32bit):
> 
> /usr/local/include/udunits.h:57: error: declaration of 'ut_unit*
> utUnit::ut_unit'
> /usr/local/include/udunits2.h:17: error: changes meaning of 'ut_unit'
> from 'typedef union ut_unit ut_unit'
> 
> 
> The following program compiles nicely with gcc, but fails with above
> error with g++:
> 
> #include <udunits.h>
> int main(int argc, char* args[]) {
> }

What happens if you move the definition of the "utUnit" typedef in "udunits.h" 
from before the "#ifdef __cplusplus" to after it, i.e., in the file 
"udunits.h", change

    /*  
     *  Unit-structure.  Don't rely on or mess with the members!
     */ 
    typedef struct utUnit { 
        ut_unit*            ut_unit;
    } utUnit;
    
    #ifdef __cplusplus
    extern "C" {
    #endif

to
    
    #ifdef __cplusplus
    extern "C" {
    #endif

    /*  
     *  Unit-structure.  Don't rely on or mess with the members!
     */ 
    typedef struct utUnit { 
        ut_unit*            ut_unit;
    } utUnit;

> Best regards,
> 
> Heiko
> 
> --
> Dr. Heiko Klein                              Tel. + 47 22 96 32 58
> Development Section / IT Department          Fax. + 47 22 69 63 55
> Norwegian Meteorological Institute           http://www.met.no
> P.O. Box 43 Blindern  0313 Oslo NORWAY
> 
> _______________________________________________
> udunits mailing list
> address@hidden
> For list information, to unsubscribe, or change your membership options, 
> visit: http://www.unidata.ucar.edu/mailing_lists/

Regards,
Steve Emmerson

Ticket Details
===================
Ticket ID: ATY-776694
Department: Support UDUNITS
Priority: Normal
Status: Closed


NOTE: All email exchanges with Unidata User Support are recorded in the Unidata inquiry tracking system and then made publicly available through the web. If you do not want to have your interactions made available in this way, you must let us know in each email you send to us.