Overloading Functions in C
It is well known that C++ allows one to overload functions, and C does not. This is typically done by "mangling" the name of a function, and thus including the types of its arguments in the symbol definition. Each variant of an overloaded function will then obtain a different symbolic name for the entry point. So by calling or jumping to the correct symbol we can execute the right version of the function.