I understand that if a source file need to reference functions from other file then it needs to include its header file, but I don\'t understand why the source file include
The header file tells people what the source file can do.
So the source file for the header file needs to know its obligations. That is why it is included.