2011-08-10 11 views
1

に割り当てるときに、私は次のコードを持っている:C互換性のないタイプのエラーと同じ型の変数

typedef unsigned char some_type[6]; 

int main() { 
     some_type some_var1; 
     some_type some_var2; 
     some_var1 = some_var2; 
     return 0; 
} 

を、私はそれをコンパイルしようとすると、私は次のようなエラーメッセージが出ます:

incompatible types when assigning to type 'some_type' from type 'unsigned char *' 

なぜこれは?どちらの変数もまったく同じ型ですか?それを機能させるために私は何ができますか?私は使用しているAPIの一部であるため、typedefを変更することはできません。

答えて

5

このように配列を割り当てることはできません。

strcpy(some_var1, some_var2); 

ない場合は、使用のmemcpy:これらは、文字列、使用strcpyのであれば

memcpy(&some_var1, &some_var2, sizeof (some_type)); 
4

このようにして配列をコピーすることはできません。配列をコピーする通常の方法はmemcpyです。

0

このように構造体のコピーをサポートしていないので、memcpyを使うべきです。

memcpy(&some_var1, &some_var2, sizeof(some_var)); 
1

あなたはので、配列の減衰定数ポインタに他の1つの配列を割り当てることはできません。その上、ある配列のアドレスを他の変数にコピーするだけではないでしょう。 memcpyのようなものを使用する必要があります。

関連する問題