The `&` must be dropped in the call to memcmp (which the author did in the current version).
Ironically, GCC 12.2 warns about this error while clang doesn't :)
The warning message produced by GCC is "'memcmp(...)' specified bound 12 exceeds source size 8 [-Wstringop-overread]", and it is printed even without -Wall, but only when the third argument is `sizeof(struct tmp)` rather than `sizeof(struct tmp)!=0`.
But as @Stratoscope pointed out, memcmp() is still problematic if the struct has padding.
Ironically, GCC 12.2 warns about this error while clang doesn't :)
The warning message produced by GCC is "'memcmp(...)' specified bound 12 exceeds source size 8 [-Wstringop-overread]", and it is printed even without -Wall, but only when the third argument is `sizeof(struct tmp)` rather than `sizeof(struct tmp)!=0`.
But as @Stratoscope pointed out, memcmp() is still problematic if the struct has padding.