summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
90e5803)
The warning is reported with latest versions of GCC, starting
from 4.5.
The array definition didn't use a constant expression (as defined
by the standard). Defining an enum value fixes the issue.
git-svn-id: https://src.develer.com/svnoss/bertos/trunk@4932
38d2e660-2303-0410-9eaa-
f027e97ec537
/** Exactly like \c DECLARE_HASHTABLE, but the variable will be declared as static. */
#define DECLARE_HASHTABLE_STATIC(name, size, hook_gk) \
/** Exactly like \c DECLARE_HASHTABLE, but the variable will be declared as static. */
#define DECLARE_HASHTABLE_STATIC(name, size, hook_gk) \
- static const void* name##_nodes[1 << UINT32_LOG2(size)]; \
+ enum { name##_SIZE = (1 << UINT32_LOG2(size)), }; \
+ static const void* name##_nodes[name##_SIZE]; \
static struct HashTable name = \
{ \
.mem = name##_nodes, \
static struct HashTable name = \
{ \
.mem = name##_nodes, \
/** Exactly like \c DECLARE_HASHTABLE_INTERNALKEY, but the variable will be declared as static. */
#define DECLARE_HASHTABLE_INTERNALKEY_STATIC(name, size) \
/** Exactly like \c DECLARE_HASHTABLE_INTERNALKEY, but the variable will be declared as static. */
#define DECLARE_HASHTABLE_INTERNALKEY_STATIC(name, size) \
- static uint8_t name##_keys[(1 << UINT32_LOG2(size)) * (INTERNAL_KEY_MAX_LENGTH + 1)]; \
- static const void* name##_nodes[1 << UINT32_LOG2(size)]; \
+ enum { name##_KEYS = ((1 << UINT32_LOG2(size)) * (INTERNAL_KEY_MAX_LENGTH + 1)), \
+ name##_SIZE = (1 << UINT32_LOG2(size)), }; \
+ static uint8_t name##_keys[name##_KEYS]; \
+ static const void* name##_nodes[name##_SIZE]; \
static struct HashTable name = \
{ \
.mem = name##_nodes, \
static struct HashTable name = \
{ \
.mem = name##_nodes, \