编译器提供的C运行时库如何说gcc alllow不同的函数参数和返回类型 - float,double,long double?

gol*_*ean 0 c compiler-construction standard-library

当我在Linux上看到man sqrt时,我看到了3个函数的原型 -

double sqrt(double x);    
float sqrtf(float x);    
long double sqrtl(long double x);
Run Code Online (Sandbox Code Playgroud)

如果编译器/库是用C++编写的,我理解它可能正在使用函数重载.

如果提供它的编译器库是用C编写的,那么编译器(gcc)如何实现这种事情,就像C不支持的函数重载一样?(或者是否像C99这样的某些后来的C标准确实支持这样的东西?)

gcc实现了哪种编程语言?

thi*_*ton 5

函数名称的选择方式不同 - sqrt对于double及其朋友sqrtf以及sqrtl浮点数和长双精度而言都是普通的.它看起来像重载,但它不是,因为函数名称是不同的.