This needs (void) as its parameter list; otherwise, random code can pass it arbitrary parameters.
(This is a backwards-compatibility quirk with "traditional" C, i.e. predating prototypes.)
The function's definition (where the () is followed by a {...} function body) is OK, because it can see that there are no (traditional-style) parameter declarations between the () and the {...}, but a declaration needs to be (void);