Преобразование типов в С++

390
15 февраля 2017, 22:58

Определение типов:

typedef int32_t INT32;
typedef uint32_t UINT32;

Имеется функция:

INT32 CopyArrayOfUint32( UINT32* pdwDstArray, UINT32* pdwSrcArray, UINT32 dwAmount )
{
memcpy((void*) pdwDstArray, (void*) pdwSrcArray, dwAmount*sizeof(UINT32));
    return  (INT32)dwAmount;
}

При ее использовании в другом файле (использование в последней строке):

struct S_BKey
{
    UINT32  uFlags;  
    UINT32* puKey;  
    UINT32* puSalt;
};
S_BKey* psKey
INT32   auExK[64];
CopyArrayOfUint32( auExK, psKey->puKey, 4 );

Возникает такая ошибка:

error: invalid conversion from INT32* {aka int*}’ to UINT32* {aka unsigned int*}’ [-fpermissive]
         case KEY_SIZE_128: CopyArrayOfUint32( auExK, psKey->puKey, 4 );
                                                                    ^
In file included from XXX/XXX.cpp:10:0:
XXXX/XXXX.h:23:7: note:   initializing argument 1 of INT32 CopyArrayOfUint32(UINT32*, UINT32*, UINT32)’
 INT32 CopyArrayOfUint32( UINT32* pdwDstArray, UINT32* pdwSrcArray, UINT32 dwAmount );

Объясните, пожалуйста, как это можно исправить.

Answer 1

Решение: нужно было привести первый аргумент в функции к UINT32

CopyArrayOfUint32( (UINT32*)auExK, psKey->puKey, 4 );
READ ALSO
Зачем нужен тип long когда есть int?

Зачем нужен тип long когда есть int?

В С есть тип longСогласно: Wiki c-types он занимет в памяти 4 байта, да и диапазон значений у него такой же как и у int

311
Можете объяснить суть этого pl/sql кода?

Можете объяснить суть этого pl/sql кода?

В этом PL/SQL коде есть вот такой код: l_balance:=account_balance(account_id_in)Вот эту строку кода не могу понять

305
Перевести Spring Security XML Config в java класс

Перевести Spring Security XML Config в java класс

Добрый деньУ меня есть конфигурация XML для Spring Security

499
СheckBox menu Java

СheckBox menu Java

Здравствуйте)Пишу мобильное приложение android

384