Code Bye

问一下在C语言中怎么实现泛型?例如java中可以使用ArrayList任意类型,C怎么实现呢,基本类型可以用v

public class One {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner input = new Scanner(System.in);
		ArrayList<Integer> number = new ArrayList<Integer>();
		ArrayList<Double> numberf = new ArrayList<Double>();

		number.add(103);
		number.add(107);

		numberf.add(103.44);
		numberf.add(107.68);

		for (int i = 0;i < number.size();i++) {

			System.out.print(number.get(i) + " ");
			System.out.print(numberf.get(i) + " ");
		}
	}
}
解决方案

3

也必须提供结构信息,用void*转换

3

C本身没有泛型一说,本身就是比较低级的过程语言。
结构类型常见的是传递结构指针时再传递一个size参数,用大小来区分到底传的什么结构体,前提是你能明确掌控全部可能的结构体且不存在大小相同的结构体;另一种是全部结构体内部的首个变量相同,用来区分结构体类型。

3

参考Variant的实现。

4

用C++的STL不好么,兼容C。

4

C++提供了泛型
vector<int *> abc;
abc.push_back(new int);

3

泛型是一种语法糖。
语法糖越甜,编译调试查错越苦!
把有限的生命浪费在品尝/品鉴无穷多种的语法糖中,本人认为不值当。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明问一下在C语言中怎么实现泛型?例如java中可以使用ArrayList任意类型,C怎么实现呢,基本类型可以用v