为了感受 vector 和并行化,我目前正在尝试使用 VC ( http://code.compeng.uni-frankfurt.de/projects/vc ) 并行化我的程序。我的程序是用C写的,但是VC需要用C++。所以我将文件重命名为 .cpp 并尝试编译它们。我得到三个编译错误,它们都是一样的
error: invalid conversion from ‘void*’ to ‘crypto_aes_ctx*’
代码如下
int crypto_aes_set_key(struct crypto_tfm *tfm, const uint8_t *in_key,
unsigned int key_len)
{
struct crypto_aes_ctx *ctx = crypto_tfm_ctx(tfm);
uint32_t *flags = &tfm->crt_flags;
int ret;
ret = crypto_aes_expand_key(ctx, in_key, key_len);
if (!ret)
return 0;
*flags |= CRYPTO_TFM_RES_BAD_KEY_LEN;
return -EINVAL;
}
我怎样才能解决这个问题,让我的代码与 C++ 编译器一起工作?
C++ 中的类型比 C 更严格,因此您必须使用转换来告诉编译器 void
指针实际是什么。
struct crypto_aes_ctx *ctx = (struct crypto_aes_ctx*) crypto_tfm_ctx(tfm);
请注意,我使用的是 C 风格的强制转换,以防您想继续使用 C 中的代码。对于 C++,您可以使用 reinterpret_cast
。 .
我是一名优秀的程序员,十分优秀!