When the C code is compiled, the name of the symbols must remain intact with the machine code. When we add function overloading to our source code, we should also introduce some name mangling techniques so that the function name does not clash as a preventive measure. C language is not a strictly typed language as many things like data types are convertible. This overload can add complexity and confusion in a language like C. On the other hand, in C++, you get machine-generated names for the symbols in the compiled binary, which is why C++ has polymorphism and C doesn’t.