で同じ機能を使用して、異なる構造から同じフィールドを取得します。私は例えば、Cで二つの構造を持つようにしたいC
A:
typedef struct a
{
char *text;
int something;
}A;
とB:
typedef struct b
{
char *text;
float something_else;
}B;
今のところ、私が知る限り、void *
パラメータを取って、両方の構造からtext
要素を得ることはできません。私は間違っていますか?これは標準Cで可能ですか?
void f(void *t)
{
printf("%s\n", *((char **)t));
}
int main()
{
struct a AA = {"hello",3};
struct b BB = {"world",4.0};
f(&AA);
f(&BB);
return 0;
}
注:構造体のアドレスを渡すと、それはtext
のアドレスを指す意味鋳造とtext
要素は、両方の構造の最初の要素であるという事実を使用してはいすることができます
私はあなたの質問を理解していません。あなたは何をしようとしているのですか? [あなたが解決しようとしている問題を説明し、それを試して解決するために使用しているメカニズムを教えてください。](http://meta.stackexchange.com/questions/66377/what-is-the-xy -problem)あるいは、void *パラメータを使用してテキスト要素を抽出するために使用しようとしている関数を含む、より詳細な例を提供してください。私はあなたの問題を完全に理解することができない場合、あなたは '労働組合 'が必要だと言っていますが、それは悪いアドバイスかもしれません。 –
私が言ったように、タイプAとタイプBの2つの構造体を持っています。今度は両方の関数を関数に渡したいと思います: 'void func(void * data)'両方の構造のテキスト入力。これは可能ですか? – mame98