Update mrb_bool definition; close #2385

- move `TRUE/FALSE` definition from `mrbconf.h` (not configurable)
- use C/C++ definition of boolean type for `mrb_bool`

The fix is originally written by @take-cheeze.
This commit is contained in:
Yukihiro "Matz" Matsumoto
2021-05-13 19:28:35 +09:00
parent 3a3761ec69
commit 1d0cfb359c
2 changed files with 23 additions and 8 deletions
-8
View File
@@ -181,14 +181,6 @@
# include <stdio.h>
#endif
#ifndef FALSE
# define FALSE 0
#endif
#ifndef TRUE
# define TRUE 1
#endif
/*
** mruby tuning profiles
**/
+23
View File
@@ -31,7 +31,30 @@ typedef uint32_t mrb_sym;
* Not to be confused with Ruby's boolean classes, which can be
* obtained using mrb_false_value() and mrb_true_value()
*/
#if defined(__cplusplus) || (defined(__bool_true_false_are_defined) && __bool_true_false_are_defined)
typedef bool mrb_bool;
# ifndef FALSE
# define FALSE false
# endif
# ifndef TRUE
# define TRUE true
# endif
#else
# if __STDC_VERSION__ >= 199901L
typedef _Bool mrb_bool;
# else
typedef uint8_t mrb_bool;
# endif
# ifndef FALSE
# define FALSE 0
# endif
# ifndef TRUE
# define TRUE 1
# endif
#endif
struct mrb_state;
#if defined _MSC_VER && _MSC_VER < 1800