Dans un projet, j'interface entre C++ et une bibliothèque C qui utilise stdbool.h défini comme tel.interfaçage avec 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
Certaines structures ont bool
membres. Donc, si j'ai une de ces structures définies comme variables locales dans une fonction C++ et que je la passe à une fonction C, les tailles sont incohérentes entre C++ et C car bool est un au revoir en C++ et 4 en C.
des conseils sur la façon de surmonter ce sans avoir recours à ma solution actuelle qui est
//#define bool _Bool
#define bool unsigned char
ce qui est à la norme C99 pour stdbool.h
Mise à jour: _Bool est maintenant défini dans VS2013, nous devons également vérifier _MSC_VER <1800. http://msdn.microsoft.com/en-us/library/hh409293.aspx – Tom