3

私はperlxstutnewSVnvを調べているところですが、例5例6で見つけましたが、newSVuvそれがより適切だと思います。不思議なことnewSVnvにも動作します。どうしたの?

4

1 に答える 1

3

doubleUV (通常は ) の代わりにNV (Perl の C に相当するもの) を使用していると思いますunsigned int。なぜなら (OS とコンパイル オプションによっては)、struct statfsPerl が 32 ビットの int を使用しているにもかかわらず、 a の値の一部が 64 ビットである可能性があるためです。 . newSVnvは、C コンパイラが任意の整数型を にキャストする方法を知っているため、機能しdoubleます。

UV に収まる の任意のメンバーに置き換えることができ、正常に機能するnewSVnvはずnewSVuvです。statfsPerl は、必要に応じて数値型を自動的に変換します。

于 2010-09-28T21:36:21.810 に答える