Llamar a C++ desde C

Llamar A C Desde C



En programación, a menudo es necesario que C y C++ trabajen juntos, generalmente cuando se actualiza un código antiguo o se combinan los módulos en varios lenguajes. Usar el código C++ en programas C es muy útil para los programadores, especialmente cuando se actualiza un software antiguo o se mezclan partes escritas en ambos lenguajes. Esta guía le mostrará cómo hacer que las funciones de C++ funcionen con C con ejemplos simples y útiles. Llamar a C++ desde un programa en C puede parecer complicado, pero este artículo explica todo paso a paso, por lo que es fácil seguirlo y comenzar a usar los dos lenguajes juntos. Esta guía es útil para sus proyectos independientemente de su nivel de conocimientos de programación.

Comprender los conceptos básicos

Cuando se trata de invocar funciones de C++ desde C y utilizar objetos de C++, es necesario considerar varios elementos clave:

Hacer referencia a las clases de C++ en C

Un enfoque común para hacer referencia a las clases de C++ en C implica el uso de punteros a clases que se pueden pasar entre el código C y C++.







Nombre Mangle

Para evitar cambios de nombre que puedan afectar el reconocimiento en C, es fundamental mantener la coherencia de los nombres. Esto asegura que C pueda identificar y utilizar correctamente las funciones y objetos.



Archivo de encabezado para doble propósito

Un archivo de encabezado juega un papel fundamental y cumple un doble propósito tanto para C como para C++. Incluye las definiciones de clases que son reconocibles por C++ y encapsula las funciones de acceso para C.



Cómo llamar a C++ desde C

Para llamar a las funciones de C++ desde C, la declaración externa 'C' es crucial. Cuando se aplica a funciones de C++, garantiza que los nombres de las funciones se traten en el estilo C (usando enlace C) durante el proceso de compilación. C no reconoce las características de C++, como la sobrecarga de funciones y la alteración de nombres, que pueden ocurrir durante la compilación de C++. Utilizando “C” externo, el compilador de C++ genera los nombres de funciones que se adhieren a las convenciones de C, lo que permite una interoperabilidad perfecta. Esta declaración proporciona una interfaz estandarizada que permite que un código C acceda y utilice las funciones de C++ sin encontrar conflictos de nombres o problemas de compatibilidad. Los siguientes son ejemplos de cómo llamar a C++ desde C. Para comprender cómo funciona esta combinación, veamos más de cerca las instancias.





Ejemplos prácticos: calcular el área de un círculo llamando a C++ desde C

En este sencillo ejemplo, le guiaremos sobre cómo calcular el área de un círculo llamando a una función de C++ en C. Este código consta de un archivo de encabezado (circle.h) y un archivo de implementación (circle.cpp). La primera parte del código implica la declaración C externa en el archivo de encabezado. Vea el siguiente código. Luego, analicemos cada línea de código individualmente:

#ifndef CIRCLE_AREA
#definir CIRCLE_AREA

externo 'C' {

  doble calcular_CArea ( doble rad ) ;

}

#terminara si

doble Círculo_CArea ( doble rad ) {

  devolver 3.14159 * rad * rad ;

}

Analicemos cada parte:



#ifndef CIRCLE_AREA y #define CIRCLE_AREA

Estas líneas son parte de include guards, que garantiza que el contenido del archivo de encabezado se incluya solo una vez en el proceso de compilación. Si CIRCLE_AREA no está definido, se incluirá el código posterior y se definirá CIRCLE_AREA.

externo 'C'

Esta sintaxis se utiliza para declarar que la siguiente función tiene un enlace C. Esto es esencial al escribir un código que se llamará tanto desde C como desde C++.

doble calcular_CArea ( doble rad ) ;

Esta línea declara una función llamada 'calcular_Carea' que toma un argumento doble (rad) y devuelve un doble.

La declaración externa 'C' en el archivo de encabezado informa al compilador que utilice un enlace estilo C para la función, haciéndola invocable desde el código C. Utilice este código para encontrar el área de un círculo guardándolo en un archivo 'circle.h'. Una vez que guarde este archivo de encabezado, todo lo que necesita hacer es incluirlo como un archivo de encabezado en el programa C++ y realizar la función deseada. El siguiente es el código C que calcula el área de un círculo. El archivo 'main.c' incluye el encabezado C++ y llama directamente a 'Circle_Carea'. Vea el siguiente código:

#incluir 'círculo.h'

En t principal ( ) {

  doble rads = 5.0 ;

  doble área = Círculo_CArea ( rads ) ;

  imprimirf ( 'El área del círculo es: %.2f \norte ' , área ) ;

  devolver 0 ;

}

Este sencillo programa en C calcula e imprime el área de un círculo usando una función definida en el archivo anterior llamado 'circle.h'. Analicemos el código:

#incluir 'círculo.h'

Esta línea incluye el contenido del archivo de encabezado 'circle.h' en el programa. Es probable que el archivo de encabezado contenga declaraciones de funciones o macros relacionadas con los cálculos circulares.

En t principal ( ) {

La ejecución del programa comienza con la función principal, el punto de entrada para los programas C.

doble rads = 5.0 ;

Se declara una variable rads de tipo double y se le asigna el valor 5,0. Esta variable probablemente representa el radio del círculo.

doble área = Círculo_CArea ( rads ) ;

Se llama a una función llamada 'Circle_Carea' con los radios como argumento y el resultado se almacena en el área variable.

imprimirf ( 'El área del círculo es: %.2f \norte ' , área ) ;

El resultado se imprime en la consola usando 'printf'. La cadena 'El área del círculo es: %.2f\n' es una cadena de formato con un marcador de posición '%f' para el valor del área. El '.2' en '%.2f' especifica que solo se deben mostrar dos decimales.

devolver 0 ;

La función principal concluye devolviendo 0, lo que indica una ejecución exitosa del programa en el sistema operativo.

En resumen, el archivo de encabezado declara una función con enlace C y el archivo de implementación define la lógica para calcular el área de un círculo. Esta separación permite que el código se utilice tanto en programas C como en C++. Consulte el resultado del código que se muestra en la siguiente imagen:

Como puede ver en el resultado, el área calculada del círculo es 78,54, que es el cálculo del área = 3,14*5*5 = 78,54. La función para calcular el área se define en el archivo de encabezado 'circle.h' que luego se llama en el archivo C++ con la ayuda de 'C' externo.

Conclusión

En esta guía lo guiamos a través del proceso de integración de C++ en sus programas C. La integración de una funcionalidad C++ en bases de código C requiere una cuidadosa consideración de los punteros, la manipulación de nombres y los archivos de encabezado de doble propósito. Los ejemplos proporcionados ilustran un enfoque práctico para lograr esta integración. Ahora que has visto cómo conectar estos dos lenguajes de programación, tienes más herramientas. Liberar el poder de C++ mientras trabaja con C podría brindarle a sus proyectos un nivel completamente nuevo de funcionalidad.