当我尝试用一个指向字符缓冲区的指针初始化一个typedef结构时,我得到了一个incompatible-pointer-types错误。该结构看起来像这样:
typedef struct otCryptoKey
{
const uint8_t *mKey; ///< Pointer to the buffer containing key. NULL indicates to use `mKeyRef`.
uint16_t mKeyLength; ///< The key length in bytes (applicable when `mKey` is not NULL).
uint32_t mKeyRef; ///< The PSA key ref (requires `mKey` to be NULL).
} otCryptoKey;
这是我尝试过的,我也尝试过用结构体中的所有参数进行初始化。
uint8_t mKey[16] = "1234567891012131";
uint8_t *mKeyPointer = mKey;
otCryptoKey *aKey = {mKeyPointer};
有人能找出为什么我得到这个错误吗?
2条答案
按热度按时间woobm2wo1#
您正在创建指向
otCryptoKey
的指针,并试图用指向uint8_t
的指针对其进行初始化。这些类型不兼容。您需要创建一个
otCryptoKey
对象,并用该指针初始化mKey
成员。kqhtkvqz2#
该语法初始化的是结构,而不是指向结构的指针。
您应该改为:
otCryptoKey aKey = {mKeyPointer};
或者更好的方法是,使用命名字段并放弃中间变量:
otCryptoKey aKey = { .mKey = mKey };