

We now have a perfectly well formed plugin which can be compiled and loaded by SourceMod. We already include SourceMod features and filled up or plugin info.

When SourceMod loads your plugin, it inspects these bits of code and substitutes it's own internal functions instead. Compiler understands that and generate a special code that says that this function call is going outside. So how does your SourcePawn code and SM core link together if compiler doesn't know about existence of the latter? SourceMod include files are written specially, so they say that the implementation of functions is somewhere else. You will notice however, that there's not much code in there, certainly not enough to implement all the great features of SourceMod, so where are they? They are implemented inside a SourceMod core which is written in C++ and is compiled into binary files which end up in bin directory. The files are plain-text and you are encouraged to read them. Those are SourceMod include files that describe various functions, tags and other features available for SourceMod plugins. You can open it right now and see a lot of inc files there. Angle brackets tell the compiler to look in the default include directory. How does this work? First of all, note that we enclosed file name into angle brackets.
