C警告,lcrypto库。使从整数没有演员和其他人的指针
问题描述:
我已经完成我的搜索,并看到很多问题解决了关于指针的警告没有演员,但之后,我无法解决我的问题,我仍然不明白我的警告。C警告,lcrypto库。使从整数没有演员和其他人的指针
所以这里是我的代码的一部分:
RSA *rsa_private;
.
more code
.
rsa_private = PEM_read_bio_RSAPrivateKey(bio_private, NULL, NULL, NULL);
在这里,我有以下警告:
然后我试图解决我的问题是这样的:
rsa_private = (RSA*) PEM_read_bio_RSAPrivateKey(bio_private, NULL, NULL, NULL)
(试图解决这样的问题,因为te函数看起来像:RSA *PEM_read_bio_RSAPrivateKey
,并且因为它返回RSA *
我试图做的是铸造)
,然后我的警告开始是:cast to pointer from integer of different size [-Wint-to-pointer-cast]
好我的观点是,为什么我收到的第一个警告? rsa_private
是RSA *
和函数返回RSA *
,是不是它是同一类型? 然后,当我把这个演员表为什么我也得到这个警告? (从未见过)
我该如何纠正我的警告?
答
正如我们可以从评论中读取的,添加演员并不是警告的正确解决方案。
而且我的编译器认为,PEM_read_bio_RSAPrivateKey
将返回一个int(在评论为正确说),所以错误是我的程序缺少#include <openssl/pem.h>
,现在编译器知道该函数返回一个RSA *
作为rsa_private
也是RSA *
不再显示警告。
你是否包含正确的头文件来获得'PEM_read_bio_RSAPrivateKey'看起来你的编译器不知道它,所以它认为它正在返回一个'int' – John3136
添加一个转换是*不是正确的解决方案;它只是掩盖了警告,比如将磁带放在汽车仪表板上的“检查引擎”指示灯上。如果你没有'#include'声明'PEM_read_bio_RSAPrivateKey'的头文件,那么你的编译器*应该*已经警告过你调用一个未声明的函数。了解如何启用该警告。然后确保你已经包含了正确的头文件。 –
我看到它是有道理的,我会检查我的标题并做一些测试,我会尽快反馈! –