summaryrefslogtreecommitdiffstats
path: root/Include/pymacro.h
diff options
context:
space:
mode:
Diffstat (limited to 'Include/pymacro.h')
-rw-r--r--Include/pymacro.h25
1 files changed, 12 insertions, 13 deletions
diff --git a/Include/pymacro.h b/Include/pymacro.h
index 22f1d71..07f4785 100644
--- a/Include/pymacro.h
+++ b/Include/pymacro.h
@@ -19,20 +19,10 @@
((char *)(foo) \
+ Py_BUILD_ASSERT(offsetof(struct foo, string) == 0))
- Written by Rusty Russell, public domain. */
+ Written by Rusty Russell, public domain, http://ccodearchive.net/ */
#define Py_BUILD_ASSERT(cond) \
(sizeof(char [1 - 2*!(cond)]) - 1)
-#if defined(__GNUC__)
-/* Two gcc extensions.
- &a[0] degrades to a pointer: a different type from an array */
-#define _Py_ARRAY_LENGTH_CHECK(array) \
- Py_BUILD_ASSERT(!__builtin_types_compatible_p(typeof(array), \
- typeof(&(array)[0])))
-#else
-#define _Py_ARRAY_LENGTH_CHECK(array) 0
-#endif
-
/* Get the number of elements in a visible array
@@ -40,9 +30,18 @@
parameters. With correct compiler support, such usage will cause a build
error (see Py_BUILD_ASSERT).
- Written by Rusty Russell, public domain. */
+ Written by Rusty Russell, public domain, http://ccodearchive.net/ */
+#if defined(__GNUC__)
+/* Two gcc extensions.
+ &a[0] degrades to a pointer: a different type from an array */
#define Py_ARRAY_LENGTH(array) \
- (sizeof(array) / sizeof((array)[0]) + _Py_ARRAY_LENGTH_CHECK(array))
+ (sizeof(array) / sizeof((array)[0]) \
+ + Py_BUILD_ASSERT(!__builtin_types_compatible_p(typeof(array), \
+ typeof(&(array)[0]))))
+#else
+#define Py_ARRAY_LENGTH(array) \
+ (sizeof(array) / sizeof((array)[0]))
+#endif
/* Define macros for inline documentation. */