Different compilers work mostly the same way.. the generic way they process what files to include is like this:

1) If the header file has quotes around it.. search in the current directory. So, for example: You have directory called "MyProgram". A subdirectory in that folder, is "include". If your file "main.cpp" in "MyProgram" tries to include the file "headerfile.h" in "MyProgram\include", it won't work. But, if you move main.cpp into \include, then it will work. Or, you could use "#include include\headerfile.h".

2) If it can't find it.. check compiler include directories.

3) Still can't find it.. throw an error.

4) If it has bent brackets around it <>, check compiler include directories only.

5) Can't find it.. throw an error.