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.