Should be there newSVuv instead newSVnv in perlxstut?
I'm just going through perlxstut and I found there newSVnv
in EXAMPLE 5 and EXAMPLE 6 but I think that newSVu开发者_高级运维v
should be more appropriate. Curiously newSVnv
works too. What's going on?
I think it uses NVs (Perl's equivalent of a C double
) instead of UVs (normally an unsigned int
), because (depending on OS and compilation options), some of the values in a struct statfs
might be 64-bit even though Perl is using 32-bit ints. newSVnv
works because the C compiler knows how to cast any integer type to a double
.
You should be able to replace newSVnv
with newSVuv
for any member of statfs
that will fit in a UV, and have it work just fine. Perl converts between its numeric types automatically as needed.
精彩评论