From [5.3.3/1], I found that:
The sizeof operator shall not be applied to an expression that has function or incomplete type
Fro
Straigth from the C99 reference NO
Stated in the document under section 6.5.3.4 The sizeof operator:
The sizeof operator shall not be applied to an expression that has function type or an incomplete type, to the parenthesized name of such a type, or to an expression that designates a bit-field member.
According to item 19 and 20 of section 6.2.5 Types:
- The void type comprises an empty set of values; it is an incomplete type that cannot be completed.
- ...A function type describes a function with specified return type. A function type is characterized by its return type and the number and types of its parameters. A function type is said to be derived from its return type, and if its return type is T, the function type is sometimes called ‘‘function returning T’’. The construction of a function type from a return type is called ‘‘function type derivation’’.
Thus void() is a function type derived from an incomplete type and its illegal as operand for the sizeof. That said its returns will depends on the compiler implementation and does not have any return value guaranteed
C99 Standard