[前][次][番号順一覧][スレッド一覧]

ruby-changes:45387

From: shyouhei <ko1@a...>
Date: Mon, 30 Jan 2017 13:42:11 +0900 (JST)
Subject: [ruby-changes:45387] shyouhei:r57460 (trunk): #include <stdbool.h>

shyouhei	2017-01-30 13:42:04 +0900 (Mon, 30 Jan 2017)

  New Revision: 57460

  https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=57460

  Log:
    #include <stdbool.h>
    
    17+ years passed since standardized in ISO, 8 years since we added
    AC_HEADER_STDBOOL to configure.in.  I'm quite confident that it's
    already safe to use <stdbool.h>.
    
    I understand that when we introduced AC_HEADER_STDBOOL, <stdbool.h>
    was remain not included because C standard and SVR4 curses conflicted
    miserably back then (#1).  Though I believe such situation has been
    fixed already(#2), I'm afraid of your operating system might ship a
    proprietary curses that still conflicts with the standard. So to avoid
    potential problem, we limit the inclusion to our internal use only.
    
    #1 : 1997 version of SUSv2 said bool is "defined though typedef" in
         <curses.h>, while C99 said bool is a macro, plus in C++ bool is a
         keyword.  AFASIK the curses library has never been a part of
         POSIX.
    
    #2 : In reality ncurses and NetBSD curses both just follow C99 to
         include <stdbool.h> from <curses.h>.  I think C99 is now widely
         adopted.
    
    ----
    
    * internal.h: #include <stdbool.h> if present.  That is
      believed to be the case for 99.9% systems that lives today.
      Non-C99, non-C++ situations are intentionally left
      undefined, advised by Motohiro Kosaki.  If you have such
      compiler, please fill the definition appropriately.

  Modified files:
    trunk/internal.h
Index: internal.h
===================================================================
--- internal.h	(revision 57459)
+++ internal.h	(revision 57460)
@@ -23,6 +23,19 @@ extern "C" { https://github.com/ruby/ruby/blob/trunk/internal.h#L23
 #endif
 #endif
 
+#ifdef HAVE_STDBOOL_H
+# include <stdbool.h>
+#endif
+
+#ifndef __bool_true_false_are_defined
+# ifndef __cplusplus
+#  error :FIXME: You are the first one who use pre-C99 compiler.
+#  error :FIXME: Please add appropriate definition here.
+#  error :FIXME: This part is intentionally left undefined,
+#  error :FIXME: because the author no longer have such environment.
+# endif
+#endif
+
 #define LIKELY(x) RB_LIKELY(x)
 #define UNLIKELY(x) RB_UNLIKELY(x)
 

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]