Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Project with both c and c++ files

Tags:

c++

c

Can I have a project that has some parts written in c and other parts written in c++ ? Is this possible ?

like image 927
Coder25 Avatar asked Sep 23 '10 11:09

Coder25


2 Answers

Yes.

If you have control of the C code, then inside your C header files you should have:

#ifdef __cplusplus
extern "C" {
#endif

// normal header stuff here

#ifdef __cplusplus
};
#endif

That way they can be properly interpreted when included by both C and CPP code files.

If you include C code in your C++ via a header, and it doesn't include the code above, and you don't have enough control of it to make the necessary modifications, be sure to use e.g.

extern "C" {
#include "some_c_header.h"
};

Note that you can use this as a modifier for declarations too, e.g.:

extern "C" void someFunction();

Note that C++ has this mechanism for importing C functionality. C doesn't have one for importing C++, and trying to include C++ code in a C compilation unit will pretty quickly end in a bunch of error messages. One consequence of this is that your main function will need to be C++.

like image 188
sje397 Avatar answered Sep 24 '22 11:09

sje397


You need a compiler that can compile both languages (I have not heard of a C++ compiler that cannot do that), or compile them with a fitting compiler each and link them (in which case the answer of @sje397 applies). There is a good explanation on the subject in the C++ FAQ Lite.

like image 35
Björn Pollex Avatar answered Sep 24 '22 11:09

Björn Pollex