我只是浏览perlxstut,在EXAMPLE 5EXAMPLE 6中找到了newSVnv,但我认为 newSVuv 应该更合适。奇怪的是,newSVnv也可以工作。这是怎么回事?

最佳答案

我认为它使用NVs(Perl等效于C double)而不是UV(通常是unsigned int),因为(取决于OS和编译选项),即使Perl使用32,struct statfs中的某些值也可能是64位的位整数。 newSVnv之所以有效,是因为C编译器知道如何将任何整数类型转换为double

您应该能够将newSVnv替换为适合UV的newSVuv的任何成员,并使其工作正常。 Perl根据需要自动在其数字类型之间转换。

09-07 09:13