私はパラメータとして異なる構造体の型を受け取ることを可能にするC言語の関数を探しています。私は3つの異なる構造異なる構造で動作できる(C言語で)関数を作成することは可能ですか?
struct a{
struct datatype0{
char test1[10];
}datatype;
struct a *next;
};
struct b{
struct datatype1{
int test1;
char test2[20];
int test3;
}datatype;
struct b *next;
};
struct c{
struct datatype2{
char test1;
char test2;
float test3;
int test4;
int test5;
}datatype;
struct c *next;
};
を作成した場合 例えば、私ができ、パラメータとしてtheese三つの異なる構造体のいずれかを受信するので、私は最初の初期化のためにのみそれを呼び出す、または第二または第三の種類ができる関数を作成したいです構造:
void function("---")//<-- inside the brackets i need to insert a parameter that can be struct a, or struct b or struct c.
{
//here for example I can insert the initialize function that have to work with any struct.
}
私は労働組合を使用するようにしようと試みたが、私は、私は構造体の種類ごとに初期化する機能を再作成する必要があることを見て...私は、ボイドポインタを使用するためにしようと試みたが、私は内側にtheeseキャストする必要があります私は構造体の各種類の関数を初期化する必要があります... 任意のアイデア??
どのC? C11では、ジェネリックがこれを行えるようにします。 C89またはC99では、ディスパッチ機械を自分で構築する必要があります。 –
これを行うのは稀です。 – nucleon
ええ、おそらく_Genericは使用しないでください。あなたは組合と一緒に正しい道を歩いています。 「各種類の構造体の初期化関数を再作成する必要があります」という意味を説明できますか? – BadZen