programas programación para lenguaje ingenieros ejemplos dev completo comandos basicos c++ c linker

programación - manual completo de c++ pdf



Usando el código C de C++ usando autotools (4)

Use el preprocesador C Haz algo como esto:

#ifdef __cplusplus extern "C" { #endif // code goes here #ifdef __cplusplus } #endif

Estoy escribiendo una (mi primera) clase de C ++ encima de un código escrito en C, pero solo puedo obtener la compilación de C ++ declarando las funciones de C en un bloque externo. Mi proyecto usa autotools; ¿hay alguna manera de automatizar este proceso, así que no tengo que mantener dos archivos de encabezado?


Utilice un bloque externo dentro de un archivo #ifdef en los archivos de encabezado C

Inicio de los archivos de encabezado

#ifdef __cplusplus extern "C" { #endif

... y al final de los archivos de cabecera

#ifdef __cplusplus } #endif

De esta manera, funcionará para incluirse en las fuentes C y C ++


Sí, crea archivos de cabecera de envoltura que incluyen tus archivos de cabecera C así ...

//Wrapper.h #ifdef __cplusplus extern "C" { #include "Actual.h" } #else #include "Actual.h" #endif //Use.cpp #include "Wrapper.h" int main() { return 0; } //Use.c #include "Wrapper.h" /*or #include "Actual.h" */ int main() { return 0; }


Tenemos una macro en un archivo de encabezado:

#ifdef __cplusplus #define _crtn "C" #else #define _crtn #endif

Luego, en archivos de encabezado, podemos usar _crtn :

#include "croutine.h" extern _crtn void MyFunction( ... );

El único problema es asegurarse de incluir el archivo de encabezado que contiene el prototipo de MyFunction dentro del archivo que contiene la implementación de MyFunction para que se compile con el enlace "C".

Esto es lo mismo que la respuesta de @epatel, pero solo requiere los feos #ifdef en un archivo de encabezado.