C函数的模拟重载实现说明
2015-07-08 14:43
295 查看
在研究printf是,这是一个变参函数,是否可以用这个特性写一个重载函数,当然只是实现模拟。
谷歌说c++实现函数重载是这样的,C++ 实现函数重载很大程度上依赖与编译器对函数名的 Mangling(损坏,破坏),即 C++ 的源代码被编译后同名的重载函数名字会被破坏,一般是在原函数名前后加上特定的字符串,以区分不同重载函数,然后在调用的时候根据参数的不同选择合适的函数。
从网上搞到一段代码
![](http://img.blog.csdn.net/20150708150610741)
完全是根据c压栈,将栈中的东西抠出来。
虽然好像还是没能达到重载的目的。。。。。。。。。
谷歌说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压栈,将栈中的东西抠出来。
虽然好像还是没能达到重载的目的。。。。。。。。。
相关文章推荐
- PRML1-引言
- WiFi连上了,却上不了网,请看这里
- jfinal框架中ajax提交返回类型datatype不确定时。。。
- 自定义属性时TypedArray的使用方法
- C中的位域与大小端问题
- hdoj 1226 超级password 【隐图BFS】
- [Selenium] 网页定位
- maven 引用自己的jar
- (C++)函数参数传递中的一级指针和二级指针
- java中的gc机制
- nmap原理及使用方法
- 编译Android程序
- java中object常用方法
- 树型菜单数据项AJAX实现增删改查
- email之TO、CC、BCC意义
- Swift学习笔记系列——(4)控制流
- zxing
- MyBatis源码分析之MappedStatemenet,SqlSource,DynamicContext
- C# Winform利用POST传值方式模拟表单提交数据(Winform与网页交互)
- Implement Queue using Stacks