In the zabbix C codebase, there are a lot of examples of function prototypes and declarations that doesn't take arguments and are declared like this:
This actually doesn't mean "this function does not take arguments", but it mean "this function can take any number of arguments". The proper declaration should be:
both in the prototype and the function declaration.
In at least an occasion, I found an instance of a function declared in the former way that was called with arguments when it was unuseful. For having an idea, just enable the -Wstrict-prototypes flag in your compiler (both gcc and clang accept it).
This also is the case with the callback declarations of the loadable modules. We should also check and use a proper signature for the called functions.