我只是浏览perlxstut,在EXAMPLE 5和EXAMPLE 6中找到了newSVnv
,但我认为 newSVuv
应该更合适。奇怪的是,newSVnv
也可以工作。这是怎么回事?
最佳答案
我认为它使用NVs(Perl等效于C double
)而不是UV(通常是unsigned int
),因为(取决于OS和编译选项),即使Perl使用32,struct statfs
中的某些值也可能是64位的位整数。 newSVnv
之所以有效,是因为C编译器知道如何将任何整数类型转换为double
。
您应该能够将newSVnv
替换为适合UV的newSVuv
的任何成员,并使其工作正常。 Perl根据需要自动在其数字类型之间转换。