Each C file is a different translation unit. In other words, it is a whole separate program, syntactically complete and correct. Thus, each C file must be compiled independently of any other C file and must contain every declaration for each identifier used, regardless of whether these declarations appear in other C files. From the point of view of the compiler, each C file is a complete program in itself (albeit with unauthorized links).
Header files typically contain files containing ads that should be displayed in file group C. Header files can be included with a preprocessor, which is a plain text copy and pasted at an included point, as a convenience to avoid manually duplicating ads between translation units.
: C - .
( , , . , . , - , .)