Messages in this thread | | | Date | Fri, 3 Aug 2012 10:59:11 -0700 | From | Josh Triplett <> | Subject | Re: [RFC 1/4] hashtable: introduce a small and naive hashtable |
| |
On Thu, Aug 02, 2012 at 11:47:01PM +0200, Sasha Levin wrote: > On 08/02/2012 10:41 PM, Josh Triplett wrote: > > On Thu, Aug 02, 2012 at 07:54:42PM +0200, Sasha Levin wrote: > >> /* I've "preprocessed" the DEFINE macro below */ > >> union { > >> struct hash_table table; > >> struct { > >> size_t bits; > >> struct hlist_head buckets[32]; > >> } > >> } my_hashtable; > > > > That expansion doesn't match the macros. Using the most recent > > definitions of DEFINE_HASHTABLE and DEFINE_STATIC_HASHTABLE from above, > > the definition would look something like this: > > > > static union { > > struct hash_table my_hashtable; > > struct { > > size_t bits; > > struct hlist_head buckets[1 << 5]; > > } __my_hashtable; > > } = { .my_hashtable.bits = 5 }; > > It's different because I don't think you can do what you did above with global variables. > > You won't be defining any instances of that anonymous struct, so my_hashtable won't exist anywhere.
...how strange. The above syntax ought to work, and many other compilers document it as legal syntax (and I thought that C1x's anonymous structs and unions allowed it), but indeed GCC doesn't accept it.
Fair enough; looks like consolidating the macro implementations won't actually work.
- Josh Triplett
| |