Rename Py_BUILD_ASSERT to Py_BUILD_ASSERT_EXPR
To make it clearer that Py_BUILD_ASSERT_EXPR(cond) cannot be used as assert(cond).
This commit is contained in:
parent
573696a9ca
commit
f0ddadcf2e
|
@ -17,18 +17,17 @@
|
|||
|
||||
#define foo_to_char(foo) \
|
||||
((char *)(foo) \
|
||||
+ Py_BUILD_ASSERT(offsetof(struct foo, string) == 0))
|
||||
+ Py_BUILD_ASSERT_EXPR(offsetof(struct foo, string) == 0))
|
||||
|
||||
Written by Rusty Russell, public domain, http://ccodearchive.net/ */
|
||||
#define Py_BUILD_ASSERT(cond) \
|
||||
#define Py_BUILD_ASSERT_EXPR(cond) \
|
||||
(sizeof(char [1 - 2*!(cond)]) - 1)
|
||||
|
||||
|
||||
/* Get the number of elements in a visible array
|
||||
|
||||
This does not work on pointers, or arrays declared as [], or function
|
||||
parameters. With correct compiler support, such usage will cause a build
|
||||
error (see Py_BUILD_ASSERT).
|
||||
error (see Py_BUILD_ASSERT_EXPR).
|
||||
|
||||
Written by Rusty Russell, public domain, http://ccodearchive.net/ */
|
||||
#if defined(__GNUC__)
|
||||
|
@ -36,7 +35,7 @@
|
|||
&a[0] degrades to a pointer: a different type from an array */
|
||||
#define Py_ARRAY_LENGTH(array) \
|
||||
(sizeof(array) / sizeof((array)[0]) \
|
||||
+ Py_BUILD_ASSERT(!__builtin_types_compatible_p(typeof(array), \
|
||||
+ Py_BUILD_ASSERT_EXPR(!__builtin_types_compatible_p(typeof(array), \
|
||||
typeof(&(array)[0]))))
|
||||
#else
|
||||
#define Py_ARRAY_LENGTH(array) \
|
||||
|
|
Loading…
Reference in New Issue