summaryrefslogtreecommitdiffstats
path: root/generic
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2024-04-26 11:27:58 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2024-04-26 11:27:58 (GMT)
commitfaed1d36850a2553a944ad121db1e99d437f543c (patch)
treef17206db8d46812ee71eb8671a15bf09d273ce6c /generic
parent0ab0962567b070c7108bac68afdfc380e7c994e4 (diff)
downloadtcl-faed1d36850a2553a944ad121db1e99d437f543c.zip
tcl-faed1d36850a2553a944ad121db1e99d437f543c.tar.gz
tcl-faed1d36850a2553a944ad121db1e99d437f543c.tar.bz2
Proposed fix for [1e48483c8b]: Use of non-standard C code in TCLBOOLWARNING
Diffstat (limited to 'generic')
-rw-r--r--generic/tclDecls.h4
1 files changed, 3 insertions, 1 deletions
diff --git a/generic/tclDecls.h b/generic/tclDecls.h
index c786392..2135911 100644
--- a/generic/tclDecls.h
+++ b/generic/tclDecls.h
@@ -4032,7 +4032,9 @@ extern const TclStubs *tclStubsPtr;
#undef Tcl_GetIndexFromObjStruct
#undef Tcl_GetBooleanFromObj
#undef Tcl_GetBoolean
-#ifdef __GNUC__
+#if !defined(__cplusplus) && !defined(BUILD_tcl) && !defined(BUILD_tk)
+# define TCLBOOLWARNING(boolPtr) (int)(sizeof(struct {_Static_assert(sizeof(*(boolPtr)) <= sizeof(int), "sizeof(boolPtr) too large");int dummy;})*0) +
+#elif defined(__GNUC__)
/* If this gives: "error: size of array ‘_bool_Var’ is negative", it means that sizeof(*boolPtr)>sizeof(int), which is not allowed */
# define TCLBOOLWARNING(boolPtr) ({__attribute__((unused)) char _bool_Var[sizeof(*(boolPtr)) > sizeof(int) ? -1 : 1];}),
#else