External procedures defined outside of compilation unit should get some form of default definition, rather than "borrow" call signature. A default can be " (...)", exact signature is not very important.
Bitcasts would be needed for calls, which would help with parameter mismatch between calls.
Bitcasts would also be needed for calls to externals in the same file if the singnature does not match.