int func1(int a, int b, int c, float d, double e)
{
return 0;
}
extern "C" {
int func2(int a, int b, int c, float d, double e)
{
return 0;
}
}
int main()
{
return 0;
}
我们使用nm命令查看编译出来的二进制中的符号表

可以看到,C++风格的func1函数,符号表中带有了参数类型信息。而C风格的func2函数则没有。
实际上,这就是C++重载函数的实现机理之一
本文通过nm命令分析C++和C风格函数在二进制符号表中的差异,揭示了C++重载函数的实现原理。C++的func1函数符号表包含参数类型信息,而C的func2函数则不显示。这一区别在于C++编译器如何处理函数重载。

被折叠的 条评论
为什么被折叠?



