A lot of programs contain a definition like the following one:
#define ARRAY_SIZE(a) (sizeof(a) / sizeof(*a))
If this is applied to a pointer instead of an array, this still compiles and the result is wrong.
I wonder if there is a kludge we can apply to make this fail to compile. Warning about the sizeof(a) / sizeof(*a) construct when a is not of array type might make sense as well.