【发布时间】:2011-11-03 14:01:03
【问题描述】:
当我在 Linux 上看到 man sqrt 时,我看到了该函数的 3 个原型 -
double sqrt(double x);
float sqrtf(float x);
long double sqrtl(long double x);
如果编译器/库是用 C++ 编写的,我知道它可能使用了函数重载。
如果提供这个的编译器库是用C编写的,那么编译器(gcc)如何实现这种东西,就像C不支持的函数重载一样? (或者是像 C99 这样的一些后来的 C 标准确实支持这样的东西?)
gcc 是用什么编程语言实现的?
【问题讨论】:
-
函数名称不同,不需要重载。
-
函数重载?在哪里?所有这些函数都有不同的名称...
-
我想你可以称之为“显式名称修改”。 8v)
-
gcc 是用 C 和 C++ 实现的,我猜可能有一些汇编程序。
-
函数目的相同,但仔细观察会发现,它们有不同的标识符,相似但不相等
标签: c compiler-construction standard-library