引言C语言通常被认为不支持泛型编程,但实际上通过巧妙的设计模式和C11标准的新特性,我们可以在C语言中实现类型安全的泛型代码。本文将深入讲解如何使用void指针、宏技巧和C11的_Generic关键字实现泛型编程,让你的代码更加灵活和可复用。一、void指针泛型基础1.1 void指针的本质#include stdio.h #include stdlib.h #include string.h // 使用void*实现泛型交换函数 void genericSwap(void* a, void* b, size_t size) { void* temp = malloc(size); if (!temp) return; memcpy(temp, a, size); memcpy(a, b, size); memcpy(b, temp, size); free(temp); } void testGenericSwap() { // 交换整数 int x = 10, y = 20; printf("交换前: x=%d, y=%d\n", x, y); genericSwap(x, y, sizeof(int)); printf("交换后: x=%d, y=%d\n\n", x, y); // 交换双精度浮点数 double a = 3.14, b = 2.71; printf("交换前: a=%.2f, b=%.2f\n", a, b); gene