1

SO、私は 32 ビット アプリのポートを 64 ビットに解決しようとしています。x64 用にコンパイルすると、次の行で警告が表示されます。sig = "何か"; sig = sig.left(strlen(定義されたもの)); <<<<<<

` そのため、strlen 値を int に暗黙的に変換する sig.left の警告が表示されます。x64 では strlen が 64 ビットの size_t を返すため、警告が表示されます。これを修正する私のオプションは何ですか..代替方法はありますか?

ありがとう

4

1 に答える 1

3

strlenは常にを返しますsize_t。ただし、size_tは、64ビットと32ビットのオペレーティングシステムでは幅が異なります。

CString.leftただし、intを期待します。コードは問題ないはずですが(文字列が長すぎてint値をオーバーランしない場合)、コンパイラはこの問題の原因であることを警告します。

キャストを使用すると、警告を無視できます。「安全」になりたい場合は、チェックを追加することでそうすることができます。

必要なキャストは次のように簡単です。

CString sig; 
sig = "something"; 
sig = sig.left((int)strlen(something_defined));
于 2009-09-25T19:35:46.607 に答える