Trong một dự án tôi đang giao tiếp giữa C++ và một thư viện C sử dụng stdbool.h được định nghĩa như vậy.interfacing với 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
Một số cấu trúc có bool
thành viên. Vì vậy, nếu tôi có một trong những cấu trúc được định nghĩa là biến cục bộ trong hàm C++ và chuyển nó vào hàm C, các kích thước không nhất quán giữa C++ và C là bool là một bye trong C++ và 4 trong C.
Có ai có bất kỳ lời khuyên để làm thế nào để khắc phục điều này mà không cần đến giải pháp hiện tại của tôi mà là
//#define bool _Bool
#define bool unsigned char
đó là so với tiêu chuẩn C99 cho stdbool.h
Cập nhật: _Bool nay được định nghĩa trong VS2013, vì vậy chúng tôi cũng cần phải kiểm tra cho _MSC_VER <1800. http://msdn.microsoft.com/en-us/library/hh409293.aspx – Tom