我在C中有2个函数做的完全一样,唯一的区别是传递给每个函数的数据类型例如一个是int另一个char *。 有没有办法将这些函数合并为一个,这样当我调用这个函数时,我不必担心数据类型。这可以使用模板在C++中完成,但我想在C中做同样的事情,但不知道如何,thx。C编程模板数据类型
2
A
回答
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* ==> int
或int ==> char*
)也许。如果是这样,你可以只做转换,然后调用其他函数。这样你就只能拥有大部分的副本。
真的没有办法像这样优雅地“模板”行为。试图这样做,只会让你的代码变得难以理解。
相关问题
- 1. C++模板模板非类型参数
- 2. 类型(函数模板):C++
- 3. C++条件模板基于数据类型编译
- 4. 模板的数据类型
- 5. 编译时检查模板类型C++
- 6. 数据类型模型C++
- 7. 为基本数据类型和特征数据类型编写模板函数
- 8. C#值类型类模板
- 9. 数据类型`long` C编程
- 10. C++ - 一个模板类专业函数模板与非类型模板参数
- 11. 在类型选择C++模板元编程问题
- 12. C++模板化类型检查编译时线程安全吗?
- 13. C++模板集合类型
- 14. 模板类型检查C++
- 15. C#模板类型继承
- 16. C++模板 - 多种类型
- 17. 基于模板参数C++模板函数返回类型
- 18. 根据模板参数包装类型容器的模板类
- 19. C++具有多种数据类型的'Undefined Reference'模板类
- 20. C++ - 比较模板和类之间的数据类型
- 21. C++,返回类型为模板类型的模板
- 22. 如何从其他类型获取类型(C++模板元编程)
- 23. 编程数据类型
- 24. C++ 11可选模板类型参数?
- 25. C++ STL函数模板类型推演
- 26. C++模板:为特定数据类型创建专用函数
- 27. C++模板专业化 - 非法类型非类型模板参数“__formal
- 28. C++中的模板编程
- 29. 整数的C++ power,模板meta编程
- 30. C++模板编程/ STL推导参数
你在做什么,对于字符串和整数都完全相同? –
也许给我们看代码吧? – Bart