2010-07-25 18 views
24

Tengo un programa C++ (.cpp) dentro del cual deseo usar algunas de las funciones que están presentes dentro de los archivos de encabezado C tales como stdio.h, conio.h, stdlib.h , graphics.h, devices.h etc.Incluyendo encabezados C dentro de un programa C++

Podría incluir la biblioteca stdio.h dentro de mi archivo cpp como: #include <cstdio>. ¿Cómo incluyo los otros archivos de la biblioteca?

¿Cómo agrego la biblioteca graphics.h?

Estoy usando Microsoft Visual Studio 6.0 Enterprise Edition y también Turbo C++ 3.0.

+1

Esto puede parecer pequeñeces, o Puede ser un error gramatical menor, pero este error a menudo indica un malentendido fundamental de la vinculación C. No puede incluir un archivo de biblioteca. Puede incluir el archivo de encabezado. El encabezado no es la biblioteca. La biblioteca no es el encabezado. Puede incluir el encabezado graphics.h y luego debe enlazar con la biblioteca cuya API se especifica en el encabezado. –

Respuesta

43

Para obtener una lista de los encabezados C estándar C (stdio, stdlib, assert, ...), añada una c y elimine .h. Por ejemplo, stdio.h se convierte en cstdio.

Para otras cabeceras, utilizo

extern "C" 
{ 
    #include "other_header.h" 
} 
3

Simplemente inclúyalos dentro de un bloque extern "C" y deberían funcionar como se esperaba.

3

No estoy seguro de lo que necesita exactamente, pero si desea utilizar funciones de moda C dentro de ti programa en C++, es fácil que puedo incluir quitando el. h y agrega un prefijo "c".

por ejemplo, si desea incluir el uso math.h

#include <cmath> 
1

Puede #include ellos utilizando sus nombres originales. #include <stdio.h> funciona bien en C++.

+0

Los encabezados estándar C se requieren para trabajar en C++ estándar, aunque es posible que coloque más de lo que desea en el espacio de nombres global. Cabeceras no estándar, como conio.h o graphics.h, pueden no configurarse correctamente, y pueden necesitar ser envueltas en 'extern' C "{...}'. Verifique su documentación de implementación. –

26
#ifdef __cplusplus 
extern "C" 
{ 
#endif 

// your functions here for the header 

#ifdef __cplusplus 
} 
#endif 

Este formato debe ayudarle a utilizar los ficheros de cabecera tanto para C y C++ sin ningún problema ...

Espero que esto ayude ... :)

Cuestiones relacionadas