私はCで快適になってから、型キャストに遭遇しました。私は、次のように定義した場合* .hファイルで構造体へのvoidポインタのキャスト
struct data {
int value;
char *label;
};
と、この別の* .hファイルで
私が使用できるように、私は構造体にボイドポインタをキャストするにはどうすればよい# define TYPE void*
関数に渡される変数 "TYPE val"?たとえば、TYPE valが指す値を利用したい場合、その値を別の関数に渡すことができるようにキャストするにはどうすればよいですか?
'#define TYPE void *'は悪い考えです。少なくとも、代わりに 'typedef'が必要です。次の宣言で何が起こるかを考えてみましょう: 'TYPE x、y;'または 'const TYPE x;'。 – jamesdlin
また、 'void *'ポインタとCを扱っている場合、明示的なキャストは必要ありません。 Cでは、 'void *'ポインタを暗黙的に*キャストすることができます: 'void * p = ...;構造体データ* val = p; '。 – jamesdlin
@jamesdlin私はそれが悪い考えであることに同意するが、それは私の考えではないので、私はそれと一緒に行かなければならない。したがって、 'TYPE val'がvoidポインタとして関数に渡されたときに、単に' struct data * temp = val; 'を宣言して関数にtempを渡すだけで、temp->値? – user1852050