sizeof operator does not evaluate its operand, it just yield the size of test_func(..) type, i.e. sizeof(void).
Referece C99 standard is 6.5.3.4.
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.