[GCC] Any tag of gcc to compile Cpp file which includes the 3rd party C header file
Liao-Yuan Zhang
zhang.lyuan@gmail.com
Sat Apr 2 01:27:00 GMT 2011
Hi,
GCC experts, I encounter a problem here need your help:
There is 3rd part header file (header.h) define a structure a below,
it can be passed compiling when treat it as C language. But we trying
to include this file in CPP file, and the compiling is failed since
g++ compiling more restriction or other reason.
shell@hercules$ g++ main.cpp
In file included from main.cpp:1:
header.h:10: error: conflicting declaration ‘typedef struct conn_t conn_t’
header.h:9: error: ‘struct conn_t’ has a previous declaration as ‘struct conn_t’
main.cpp: In function ‘int main()’:
main.cpp:8: error: aggregate ‘conn_t list’ has incomplete type and
cannot be defined
Header file header.h:
1 #ifndef __HEADER_H__
2 #define __HEADER_H__
3 #ifdef __cplusplus
4 extern "C" {
5 #endif
6 typedef struct
7 {
8 int data;
9 struct conn_t *next;
10 }conn_t;
11
12 #ifdef __cplusplus
13 }
14 #endif
15
16 #endif // __HEADER_H__
Cpp file main.cpp
1 #include "header.h"
2 #include <iostream>
3
4 using namespace std;
5 int main()
6 {
7 conn_t list;
8 list.data = 1;
9 list.next = NULL;
10 cout<<"hello:"<<list.data<<endl;
11 return 0;
12 }
Question: Is there any tag of gcc/g++ to compile it?
First, the header file is 3rd party C header file, it can be compiled
in C language;
Second, the header file can not be updated, just for specific purpose,
I have to includes this header file in my C++ file, and then during
compile the C++, the header file also will be treat as C++, that's
what problem I encountered.
--
Cheers,
Liao-Yuan
More information about the Gcc-help
mailing list