首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

怎样用C语言兑现 函数重载

2012-09-18 
怎样用C语言实现 函数重载怎样用C语言实现 函数重载,用宏应该可以实现,但是有没有大牛给个例子, 其它方法

怎样用C语言实现 函数重载
怎样用C语言实现 函数重载,用宏应该可以实现,但是有没有大牛给个例子, 其它方法实现也可以。 谢谢。。。

[解决办法]

探讨

引用:

C语言不支持函数重载,它在编译函数名称的时候根本就没有参数,是不是同一个函数仅仅由函数名称进行区分。


就是因为C语言没有重载机制,所以我才想用C语言的宏来实现类似C++的重载功能。

[解决办法]
仅供参考
C/C++ code
#include <stdio.h>double A[300][100];double valuex[300];double valuey[300];int i;double fun00(double x,double y) {return x  +   y  ;};double fun01(double x,double y) {return x*x+ 3*y  ;};double fun02(double x,double y) {return x  + 2*y*x;};//...  fun03(double x,double y) {return ...+...   ;};//...//...  fun98(double x,double y) {return ...+...   ;};double fun99(double x,double y) {return x/2+20*y  ;};double (*funNN[100])(double,double)={    fun00,    fun01,    fun02,//  fun03,//  ...//  fun98,    fun99,};int main() {    double x,y;    int f,FN;    for (i=0;i<300;i++) {        valuex[i]=(double)i;        valuey[i]=(double)i;    }    FN=3;    for (i=0;i<300;i++) {         x=valuex[i];         y=valuey[i];         for (f=0;f<FN;f++) A[i][f]=funNN[f](x,y);    }    for (i=0;i<3;i++) {        for (f=0;f<FN;f++) printf("%lg ",A[i][f]);        printf("\n");    }    return 0;}//0 0 0//2 4 3//4 10 10
[解决办法]
探讨
谢谢,已经实现了

[解决办法]
贴一个

C/C++ code
#define FUNC(type, data) {type d1 = data; func(#type, &d1);}void func1(int i) {printf("this is function of int type, value = %d\n\n", i);}void func2(float f) {printf("this is function of float type, value = %f\n\n", f);}void func(char* sz, void* p){    if (strcmp(sz, "int") == 0)    {        func1(*(int*)p);    }    if (strcmp(sz, "float") == 0)    {        func2(*(float*)p);    }}int main(){    FUNC(int, 8);    FUNC(float, 8);    return 0;} 

热点排行