Variables, functions need to be in use before the statement . As for what function in dry, compile time does not care about, link (Link) , only to find all the compiled files, looking for anything specific function did.
* .H header files to do things like "copy - paste", where references, put the * .h where to paste the contents. As to whether the header file name consistent with the cpp name, not attention.