35
votes

I have a C++ program (.cpp) inside which I wish to use some of the functions which are present inside the C header files such as stdio.h, conio.h, stdlib.h, graphics.h, devices.h etc.

I could include the stdio.h library inside my cpp file as : #include <cstdio>. How do I include the other library files?

How do I add the graphics.h library?

I'm using Microsoft Visual Studio 6.0 Enterprise Edition and also Turbo C++ 3.0.

5
This may seem like nitpicking, or it my be a minor grammatical error, but this error often indicates a fundamental misunderstanding of C linkage. You cannot include a library file. You can include the header file. The header is not the library. The library is not the header. You can include the graphics.h header, and then you must link against the library whose API is specified in the header.William Pursell

5 Answers

68
votes

For a list of C standard C headers (stdio, stdlib, assert, ...), prepend a c and remove the .h. For example stdio.h becomes cstdio.

For other headers, use

extern "C"
{
  #include "other_header.h"
}
39
votes

If you put this inside your headers:

#ifdef __cplusplus
extern "C"
{
#endif

// your normal definitions here

#ifdef __cplusplus
}
#endif

Then it will work for both C and C++ without any problem ...

Hope this helps...:)

6
votes

I'm not sure what you need exactly, but if you want to use old fashioned C functions inside you C++ program, you can easy include them by removing the .h and add a "c" prefix.

for example if you want to include math.h use

#include <cmath>
3
votes

Just include them inside a extern "C" block an they should work like expected.

1
votes

You can #include them using their original names. #include <stdio.h> works just fine in C++.