2011-11-12 71 views
2

我在C中有2个函数做的完全一样,唯一的区别是传递给每个函数的数据类型例如一个是int另一个char *。 有没有办法将这些函数合并为一个,这样当我调用这个函数时,我不必担心数据类型。这可以使用模板在C++中完成,但我想在C中做同样的事情,但不知道如何,thx。C编程模板数据类型

+3

你在做什么,对于字符串和整数都完全相同? –

+3

也许给我们看代码吧? – Bart

回答

1

我知道两种常用的方法来处理这种situtation在C.
1)更换int和 “字符*”,用 “无效* p” 和 “INT大小”

void f1(int i); void f2(char *str); -> void f(void *p, int s); 
f(&i, sizeof(i)); f(str, strlen(str);//or may be f(str, sizeof(str[0]); 

例如看到qsort从STDLIB

2)使用预处理器,就像

#define f(arg) do { \ 
    //magic 
} while (0) 

这样的东西用于模拟的std ::林列表ux内核。

+0

谢谢,会做 –

0

如果他们是“做同样的事情”,然后在其中的一个你的参数转换成另一种类型(char* ==> intint ==> char*)也许。如果是这样,你可以只做转换,然后调用其他函数。这样你就只能拥有大部分的副本。

真的没有办法像这样优雅地“模板”行为。试图这样做,只会让你的代码变得难以理解。