Hi ganglia developers,
I'm a relatively new user of Ganglia. I'm using it to monitor a data
acquisition system,
in which each component of the data acquisition system will have the
possibility of
injecting custom metrics. I'm creating a C++ wrapper for the gmetric C
functions to make
it easier to inject the custom metrics, but am having a problem compiling code
that
uses the ganglia.h header file with a C++ compiler. This is that when compiling
code that has this:
extern "C" {
#include ganglia.h
}
I receive errors like this:
/fnal/ups/prd/ganglia/v3_1_2/Linux64bit+2.6-2.5/include/ganglia.h:24: error:
conflicting declaration typedef struct
Ganglia_pool* Ganglia_pool
/fnal/ups/prd/ganglia/v3_1_2/Linux64bit+2.6-2.5/include/ganglia.h:24: error:
struct Ganglia_pool has a previous
declaration as struct Ganglia_pool
/fnal/ups/prd/ganglia/v3_1_2/Linux64bit+2.6-2.5/include/ganglia.h:25: error:
conflicting declaration typedef struct
Ganglia_gmond_config* Ganglia_gmond_config
/fnal/ups/prd/ganglia/v3_1_2/Linux64bit+2.6-2.5/include/ganglia.h:25: error:
struct Ganglia_gmond_config has a
previous declaration as struct Ganglia_gmond_config
/fnal/ups/prd/ganglia/v3_1_2/Linux64bit+2.6-2.5/include/ganglia.h:26: error:
conflicting declaration typedef struct
Ganglia_udp_send_channels* Ganglia_udp_send_channels
/fnal/ups/prd/ganglia/v3_1_2/Linux64bit+2.6-2.5/include/ganglia.h:26: error:
struct Ganglia_udp_send_channels has a
previous declaration as struct Ganglia_udp_send_channels
/fnal/ups/prd/ganglia/v3_1_2/Linux64bit+2.6-2.5/include/ganglia.h:29: error:
field pool has incomplete type
/fnal/ups/prd/ganglia/v3_1_2/Linux64bit+2.6-2.5/include/ganglia.h:34: error:
conflicting declaration typedef struct
Ganglia_metric* Ganglia_metric
/fnal/ups/prd/ganglia/v3_1_2/Linux64bit+2.6-2.5/include/ganglia.h:28: error:
struct Ganglia_metric has a previous
declaration as struct Ganglia_metric
I find that the errors come from the ganglia.h typedef's:
typedef struct Ganglia_pool* Ganglia_pool;
typedef struct Ganglia_gmond_config* Ganglia_gmond_config;
typedef struct Ganglia_udp_send_channels* Ganglia_udp_send_channels;
...
typedef struct Ganglia_metric * Ganglia_metric;
and that I can fix this problem by redefining the typedef's as:
typedef struct Ganglia_pool* Ganglia_pool_t;
typedef struct Ganglia_gmond_config* Ganglia_gmond_config_t;
etc.
and then changing it's use in gmond.c, libgmond.c and gmetric.c to reflect
this naming change.
Is it possible to have this change implemented in the ganglia distribution?
Or is there a better way?
Thanks in advance for your help.
-Sue Kasahara
------------------------------------------------------------------------------
_______________________________________________
Ganglia-general mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ganglia-general