I am doing cross compiling between C++ and C compiler for header files and desperately need help on figuring out namespace issue error generated by C++ compiler.
Here are two header files:abc1.h, abc2.h and a C/C++ file containing the main().
When I compile this code on C, it works fine. However whenever I compile this on C++ compiler. It gives me the following error:
g++ -g -Wall cpptest.c -o cpptest
"abc2.h:3: error: using typedef-name ‘abc’ after ‘struct’
abc1.h:9: error: ‘abc’ has a previous declaration here"
I need to have both data structure available (struct _abc and struct abc)
someone typedef the _abc to abc inside abc1.h and I cannot change this file. I can only change abc2.h and the C/C++ file.
Anyone can explain to me why C++ compiler cannot accept this?
Anyone know of solution without changing abc1.h? (a work around)
/*********** Header file abc1.h************/
#ifndef __ABC1__
struct _abc
{
int a;
int b;
}/*abc*/;
/* if I comment out The line below and uncommented the abc above, it works well.
typedef seems to be an issue in C++ compiler. However I can not touch this header file. */
typedef struct _abc abc;
#endif
/*********** Header file abc2.h************/
#ifndef __ABC2__
struct abc
{
char *c;
void *d;
};
#endif
/* C/C++ file named abc.c or abc.cpp */
#include "abc1.h"
#include "abc2.h"
#include <stdio.h>
int main()
{
printf("testing \n");
return 0;
}