2016-12-15 9 views
0

私は検索を行い、キャストのないポインタについての警告については多くの問題を解決しましたが、その後は問題を解決できず、私の警告を理解できません。ここでC警告、lcrypto lib。キャストなしで整数からポインタを作る

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]

[OK]を私のポイントは、なぜ私は最初の警告を取得していますか? rsa_privateRSA *であり、この関数はRSA *を返します。同じ型ではありませんか? それから私はそのキャストを置くときに、なぜ私はその警告も受けるのですか? (以前は見たことがありません)

警告をどうすれば修正できますか?

+2

'PEM_read_bio_RSAPrivateKey'を得るための正しいヘッダを含んでいますか?あなたのコンパイラはそれを知らないので、' int 'を返すと思います。 – John3136

+1

キャストを追加するのは適切な解決策ではありません。あなたの車のダッシュボードにある "チェックエンジン"ライトの上にテープを置くような警告を隠すだけです。 'PEM_read_bio_RSAPrivateKey'を宣言しているヘッダーを'#include'していなければ、宣言されていない関数を呼び出すことについてコンパイラは警告する必要があります。その警告を有効にする方法を確認してください。そして、あなたが正しいヘッダをインクルードしていることを確認してください。 –

+0

私はそれが意味を参照してください、私は私のヘッダーをチェックし、いくつかのテストを行う、私はできるだけ早くフィードバックされます! –

答えて

0

キャストの追加は、警告の正しい解決策ではありません。

そして、私のコンパイラはPEM_read_bio_RSAPrivateKeyは(として正しくコメントで言った)のintを返しているので、エラーは私のプログラムは#include <openssl/pem.h>が不足しているということだと思い、今コンパイラ機能がRSA *rsa_privateとしても返すことを知っていることRSA *警告が表示されなくなりました。

関連する問題