#define C(x) (sizeof(char[x]), x)
sizeof is a compile-time operation so x need to be known at compile time.
It didn't work as expected. It turns out there is an exception and the standard says that sizeof is actually calculated at runtime specifically for variable length arrays:
> The sizeof operator yields the size (in bytes) of its operand, which may be an expression or the parenthesized name of a type. The size is determined from the type of the operand. The result is an integer. If the type of the operand is a variable length array type, the operand is evaluated; otherwise, the operand is not evaluated and the result is an integer constant.
I noticed her preference because if I lie on my left-hand side, she is a very happy little spoon and uses my arm as a pillow.
If I lie on my right-hand side, kitty is confused. She will take extra preparatory rotations hoping that one more turn will be enough for the problematic situation to resolve. After some hard stares, maybe an annoyed huff, she will reluctantly curl-up as a face-to-face non-spoon.