1
 uint8_t *bufferPtr=NULL;
 size_t bufferPtrSize=0;
 bufferPtr=malloc(bufferPtrSize *  sizeof(uint8_t))

File1.m でこの同じコードを使用しましたが、正常に動作しています。File2.mm でこれを使用すると、assigning to 'uint8_t *' (aka 'unsigned char *' ) from incompatible type 'void *'エラーが発生します。

4

1 に答える 1

4

これは、.mmファイルが通常の Objective-C ファイルではなく、Objective-C++ ファイルとして扱われるためです。そのため、ここでは C++ の型規則が適用されます。C++ では、型 (この場合は void ポインター) を使用することを決定し、別の型 (この場合は char ポインター) が必要な場合は、それらを明示的にキャストする必要があります。これを行う方法は、ターゲット タイプがstatic_cast<T>()どこにあるかです。Tすなわち:uint8_t *bufferPtr = static_cast<uint8_t *>(malloc(bufferPtrSize * sizeof(uint8_t)));

于 2012-11-16T11:51:03.453 に答える