Can I have a project that has some parts written in c and other parts written in c++ ? Is this possible ?
-
Why make it complex. Pick a language and stick to it!Loki Astari– Loki Astari2010-09-23 12:09:44 +00:00Commented Sep 23, 2010 at 12:09
-
@Martin York: I disagree. (1) we should have less rules, not more (2) it gets the computer closer to understanding us (via development of techniques and tools to cope). Granted, not all projects can afford to contribute to this pie-in-the-sky goal ;)sje397– sje3972010-09-23 12:35:50 +00:00Commented Sep 23, 2010 at 12:35
-
1Less moving parts less chance of breaking.Loki Astari– Loki Astari2010-09-23 12:42:51 +00:00Commented Sep 23, 2010 at 12:42
-
Yes, that's what I meant when I said not all projects can afford to contribute toward the effort of ironing out the kinks: not enough time, motivation, money, whatever. It will obviously introduce some challenges to use more than one language. But it will also provide some valuable lessons and experience.sje397– sje3972010-09-23 13:02:31 +00:00Commented Sep 23, 2010 at 13:02
6 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++.
10 Comments
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.
1 Comment
Yes you can. C++ is mainly a superset of C. There might be some exceptions, but for the most part it is quite normal to include stuff written in C in your C++ projects.