您的位置:首页 > 其它

C函数的模拟重载实现说明

2015-07-08 14:43 295 查看
在研究printf是,这是一个变参函数,是否可以用这个特性写一个重载函数,当然只是实现模拟。

谷歌说c++实现函数重载是这样的,C++ 实现函数重载很大程度上依赖与编译器对函数名的 Mangling(损坏,破坏),即 C++ 的源代码被编译后同名的重载函数名字会被破坏,一般是在原函数名前后加上特定的字符串,以区分不同重载函数,然后在调用的时候根据参数的不同选择合适的函数。

从网上搞到一段代码

#include <stdarg.h>
#include <stdio.h>

void var_args_func(const char * fmt, ...)
{
char    *ap;

ap = ((char*)&fmt) + sizeof(fmt);
printf("%d\n", *(int*)ap);

ap =  ap + sizeof(int);
printf("%d\n", *(int*)ap);

ap =  ap + sizeof(int);
printf("%s\n", *((char**)ap));
}

int main()
{
var_args_func("%d %d %s\n", 4, 5, "hello world");
return 0;
}




完全是根据c压栈,将栈中的东西抠出来。

虽然好像还是没能达到重载的目的。。。。。。。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: