Including C headers inside a C++ program
Asked Answered
H

5

50

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.

Houseboat answered 25/7, 2010 at 12:20 Comment(1)
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.Selffulfillment
F
78

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"
}
Ferocious answered 25/7, 2010 at 12:25 Comment(0)
T
56

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...:)

These answered 26/7, 2010 at 17:15 Comment(0)
W
7

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>
Waterworks answered 25/7, 2010 at 12:26 Comment(0)
U
4

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

Unique answered 25/7, 2010 at 12:22 Comment(0)
F
1

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

Fredrickafredrickson answered 25/7, 2010 at 17:35 Comment(1)
The C standard headers are required to work in standard C++, although you may be putting more than you like into the global namespace. Non-standard headers, like conio.h or graphics.h, may not be set up properly, and may need to be wrapped in extern "C" { ... }. Check your implementation documentation.Wini

© 2022 - 2024 — McMap. All rights reserved.