In C
, we don't "import" functions. We compile individual translation units to object files and then link all of them together to form the binary / executable.
In the linking phase, linker checks the object files for required symbols and references and links them together to produce the single executable (thus making the function call possible at runtime).
In your case, the compiler does not "see" the function declaration at the time of the call (so, it does not have any idea of the function signature, which can be a potential pitfall, that is why you have the "warning"), but in the linking phase, linker is able to find the reference to the function (assuming both the translation units are being linked together to form the binary) and creates the binary.
FWIW, implicit function declarations are non-standard as per the latest C standards. You must forward declare the function (provide a prototype) before you can actually use the function. Quoting C11
, Foreword,
Major changes in the second edition included:
[....]
— remove implicit function declaration