En un proyecto estoy interactuando entre C++ y una biblioteca C que usa stdbool.h definido como tal.interconectando con stdbool.h C++
#ifndef _STDBOOL_H
#define _STDBOOL_H
/* C99 Boolean types for compilers without C99 support */
/* http://www.opengroup.org/onlinepubs/009695399/basedefs/stdbool.h.html */
#if !defined(__cplusplus)
#if !defined(__GNUC__)
/* _Bool builtin type is included in GCC */
typedef enum { _Bool_must_promote_to_int = -1, false = 0, true = 1 } _Bool;
#endif
#define bool _Bool
#define true 1
#define false 0
#define __bool_true_false_are_defined 1
#endif
#endif
Algunas estructuras tienen bool
miembros. Entonces si tengo una de estas estructuras definida como variables locales dentro de una función C++ y la paso a una función C los tamaños son inconsistentes entre C++ y C ya que bool es un bye en C++ y 4 en C.
¿Alguien tiene algún consejo a la manera de superar esto sin tener que recurrir a mi solución actual que es
//#define bool _Bool
#define bool unsigned char
sea conforme a la norma C99 para stdbool.h
Actualización: _Bool ahora se define en VS2013, por lo que también debemos verificar _MSC_VER <1800. http://msdn.microsoft.com/en-us/library/hh409293.aspx – Tom