0

Perl/Tk を CPAN 経由で OS X Mountain Lion にインストールできません。Googleが助けないファイルのエラーでエラーになります:

/Users/villadelfia/perl5/perlbrew/perls/perl-5.17.8/bin/perl5.17.8 /Users/villadelfia/perl5/perlbrew/perls/perl-5.17.8/lib/5.17.8/ExtUtils/xsubpp  -typemap /Users/villadelfia/perl5/perlbrew/perls/perl-5.17.8/lib/5.17.8/ExtUtils/typemap -typemap /Users/villadelfia/Downloads/Tk-804.030/Tk/typemap  IO.xs > IO.xsc && mv IO.xsc IO.c
Warning: Found a 'CODE' section which seems to be using 'RETVAL' but no 'OUTPUT' section. in IO.xs, line 235
cc -c  -I.. -I/usr/X11R6/include -I/usr/local/include/freetype2 -fno-common -DPERL_DARWIN -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -O3   -DVERSION=\"804.03\" -DXS_VERSION=\"804.03\"  "-I/Users/villadelfia/perl5/perlbrew/perls/perl-5.17.8/lib/5.17.8/darwin-2level/CORE"   -Wall -Wno-implicit-int -Wno-comment -Wno-unused -D__USE_FIXED_PROTOTYPES__ IO.c
IO.xs:210:10: error: invalid argument type 'void' to unary expression
     if (!SvUPGRADE(buf, SVt_PV))
         ^~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
make[1]: *** [IO.o] Error 1
make: *** [subdirs] Error 2

ご覧のとおり、perlbrew も実行しています。

これを引き起こす可能性のあるアイデアはありますか?

4

1 に答える 1

0

5.17.7 リリース ノートから:

SvUPGRADE() はもはや式ではありません。元々、このマクロ (およびその基礎となる関数 sv_upgrade()) はブール値として文書化されていましたが、実際には常にエラーが発生し、false を返すことはありませんでした。2005 年にドキュメントが更新され、void の戻り値が指定されましたが、後方互換性のために SvUPGRADE() は常に 1 を返すように残されていました。これは削除され、SvUPGRADE() は戻り値のないステートメントになりました。

したがって、これは構文エラーになります。

if (!SvUPGRADE(sv)) { croak(...); }

そのようなコードがある場合は、単に次のように置き換えます

SvUPGRADE(sv);

または、おそらく古い perl でのコンパイラの警告を回避するため

(void)SvUPGRADE(sv);

すでに報告済みです。

于 2013-02-03T18:51:54.590 に答える