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:
Victor Stinner 2011-09-29 12:43:18 +02:00
parent 573696a9ca
commit f0ddadcf2e
1 changed files with 5 additions and 6 deletions

View File

@ -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,8 +35,8 @@
&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), \
typeof(&(array)[0]))))
+ Py_BUILD_ASSERT_EXPR(!__builtin_types_compatible_p(typeof(array), \
typeof(&(array)[0]))))
#else
#define Py_ARRAY_LENGTH(array) \
(sizeof(array) / sizeof((array)[0]))