Tengo problemas con algún código que he heredado. Este código se estaba desarrollando bien en un entorno C-only, pero ahora necesito usar C++ para llamar a este código. La cabecera problem.h
contiene:Comprueba si bool está definido en C/C++
#ifndef _BOOL
typedef unsigned char bool;
static const bool False = 0;
static const bool True = 1;
#endif
struct astruct
{
bool myvar;
/* and a bunch more */
}
Cuando compilo como código C++, consigo error C2632: 'char' followed by 'bool' is illegal
me sale el mismo error si envuelvo la #include "problem.h"
en extern "C" { ... }
(que no entiendo, porque no debe ninguna palabra clave bool
cuando se compila como C)
intenté quitar el bloque de #ifndef _BOOL
a #endif
, y compilar como C++ y recibo mensajes de error:?
error C2061: C requires that a struct or union has at least one member
error C2061: syntax error: identifier 'bool'
Simplemente no entiendo cómo el compilador de C++ se queja de una redefinición de bool
, sin embargo, cuando se quita la redefinición y tratar de usar sólo bool
para definir las variables, no se encontró nada .
Cualquier ayuda es muy apreciada.
Tenga en cuenta que 'extern" C "' no significa "compilar como C". Significa "compilar con enlace C". El código dentro todavía es C++, simplemente no se puede definir nada que no se pueda vincular como C. –