It's clear from the C standard that general function calls are expressions from the definition:
An expression is a sequence of operators and operands that specifies computation of a value, or that designates an object or a function, or that generates side effects, or that performs a combination thereof. The value computations of the operands of an operator are sequenced before the value computation of the result of the operator. (6.5.1)
Since the () are operators and it returns a value, regular function calls are obviously expressions.
But those which don't return a value don't seem to fit with this definition. The function name itself does (as it designates a function), but this isn't a function call.
The standard does clearly say that a function call is an expression, and that it can return void, but this seems to conflict with the definition of an expression. What am I missing?