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