4

構造体を使用しています

typedef struct ObjectHandle
{
    long *objHandle;
}ObjectHandle ;

出力がこの構造体の値である関数

AllocateObject(ObjectHandle* objectHandle) 
{
   .... 
   ...
   ...
   objectHandle->objHandle = some long value;
}

しかし、コンパイラは警告を出しています:代入は、キャストなしで整数からポインタを作成します

助けてください

4

3 に答える 3

7

値(メモリ)ではなく、ポインタ(アドレス)に値を割り当てているようです

これを試して: *(objectHandle->objHandle) = some long value;

于 2013-06-10T07:25:40.090 に答える
0

long 整数をポインターに割り当てています (objHandle は long へのポインターです)。コンパイラが言うように。

これは有効な c ですが、long 整数はポインタではなく long 整数であるため、通常はかなりばかげています。

「いくつかの長い値」が実際に何を参照しているか、ハンドルがその後どのように使用されているかを確認しないと、値をキャストするか、アドレスを取得するか、ハンドルのタイプを変更するか、または何かを指定する必要があるかどうかを示すのは少し困難です。そうしないと。

于 2013-06-10T11:10:13.390 に答える