2017-01-23 10 views
1

私はデータ転送のためにただ1つの(void*)ポインタを持つ関数を持っています。しかし、その(void*)ポインタを使って、2つの異なる構造(struct Astruct B)を同時に送信する必要があります。このポインタで別の構造体を保存し、構造体サイズとオフセットを使用してデータにアクセスすることは可能ですか?1つのポインタを受け付ける関数に2つの別個の構造体を渡すにはどうすればよいですか?

+0

あなた自身で何かを実装しようとしましたか? –

+0

@GAURANGVYAS、そうでした。私は何らかの種類のシリアル化を試みました。しかし、私はそれをすることはできませんでした。 – Dropper

答えて

5

あなたのような何かができる:

struct C 
{ 
    struct A myA; 
    struct B myB; 
}; 

CmyAmyB変数を移入した後、あなたの関数でstruct Cへのポインタを渡します。

2

あなたは、そのstructのインスタンスのアドレスを渡し、二つのポインタを保持しているstructを作成することができます:それは場合に役立ちます

typedef struct 
{ 
    struct A *a_ptr; 
    struct B *b_btr; 
} struct_with_two_pointers; 

... 

struct A a; 
struct B b; 

... 

struct_with_two_pointers X; 
x.a_ptr = &a; 
x.b_ptr = &b; 

someVoidFunc((void *) &X); 
2

は、サンプルコードスニペットを追加します。

typedef struct 
{ 
    int age; 
    int rollno; 
}struct_A; 

typedef struct 
{ 
    char name[10]; 
    int marks; 
}struct_B; 

typedef struct 
{ 
    struct_A a; 
    struct_B b; 
}struct_C; 

struct_C combined_struct = {{15,10}, {"Henry", 85}}; //Fill the structure here. 

someRandonFunction((void*) &combined_struct); //Pass it. 
関連する問題