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をエミュレートするために使われました。

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です