This archive contains answers to questions sent to Unidata support through mid-2025. Note that the archive is no longer being updated. We provide the archive for reference; many of the answers presented here remain technically correct, even if somewhat outdated. For the most up-to-date information on the use of NSF Unidata software and data services, please consult the Software Documentation first.
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