質問: Cプログラミングテンプレートのデータ型 私は全く同じことを行う **C** の2つの関数を持っていますが、唯一の違いは各関数に渡されるデータ型です。 1つは他のchar * intです。 これらの関数を1つに結合する方法があるので、この1つの関数を呼び出すときにデータ型について心配する必要はありません。これはC + +でテンプレートを使用して行うことができますが、私は **C** で同じことをやりたい、どのように、thxを知らない。
回答: I know two common ways to deal with such situtation in C. 1)Replace int and "char *", with "void *p" and "int size" ``` 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]); ``` たとえば、stdlibの qsort を参照してください。 2)のようなプリプロセッサを使う ``` #define f(arg) do { \ //magic } while (0) ``` このようなものは、linuxカーネルのstd :: listをエミュレートするために使われました。