Bram Moolenaar wrote:
Patch 7.0.051 (after 7.0.44)
Problem: The Perl interface doesn't compile or doesn't work properly.
Solution: Remove the spaces before #ifdef and avoid an empty line above it.
Files: src/if_perl.xs
[snip]
It's ok with ActiveState Perl 5.8.7, but goes wrong with 5.8.8,
after I modify if_perl.xs it's ok too.
Index: if_perl.xs
===================================================================
--- if_perl.xs (revision 63)
+++ if_perl.xs (working copy)
@@ -155,8 +155,8 @@
static int (*perl_run)(PerlInterpreter*);
static int (*perl_parse)(PerlInterpreter*, XSINIT_t, int, char**, char**);
static void* (*Perl_get_context)(void);
-static void (*Perl_croak)(pTHX_ const char*, ...) __attribute__((noreturn));
-static void (*Perl_croak_nocontext)(const char*, ...)
__attribute__((noreturn));
+static void (*Perl_croak)(pTHX_ const char*, ...);
+static void (*Perl_croak_nocontext)(const char*, ...);
static I32 (*Perl_dowantarray)(pTHX);
static void (*Perl_free_tmps)(pTHX);
static HV* (*Perl_gv_stashpv)(pTHX_ const char*, I32);
I don't know why the old version containing these two lines can
be compiled successfully, I have checked perl588delta, it says there
is no incompatibility between 5.8.7 and 5.8.8.
=============
WinXP Home, ActiveState Perl 5.8.8, Python 2.4.3,
VC 6.0(cl.exe 12.00.8804 for 80x8)
=============
set path=c:\perl\bin;c:\python24;%path%
cd vim7\src
@echo make...
nmake -f Make_mvc.mak all GUI=yes OLE=yes MBYTE=yes IME=yes GDYNAMIC_IME=yes GIME=yes
PERL=c:\Perl DYNAMIC_PERL=yes PERL_VER=58 PYTHON=c:\Python24 DYNAMIC_PYTHON=yes
PYTHON_VER=24 CSCOPE=yes CPUNU=i586 DEBUG=yes MAP=lines
@echo done
pause
================
....
cl -c /W3 /nologo -DWIN32 -D_WIN32 -D_MT -MT -I. -Iproto -DHAVE_PATHDEF -DWIN32
-DFEAT_CSCOPE -DFEAT_NETBEANS_INTG -DWINVER=0x0400 -D_WIN32_WINNT=0x0400
/Fo.\ObjGOLYd/ -D_DEBUG -DDEBUG /Od -DFEAT_OLE -DFEAT_MBYTE_IME -DDYNAMIC_IME -DGLOBAL_IME
-DFEAT_MBYTE -DFEAT_GUI_W32 -DDYNAMIC_ICONV -DDYNAMIC_GETTEXT -DFEAT_PYTHON
-DDYNAMIC_PYTHON -DDYNAMIC_PYTHON_DLL=\"python24.dll\" -DFEAT_PERL -DDYNAMIC_PERL
-DDYNAMIC_PERL_DLL=\"perl58.dll\" -DFEAT_BIG /Zi /Fd.\ObjGOLYd/ /I c:\Perl\Lib\Core if_perl.c
if_perl.c
if_perl.xs(158) : error C2061: syntax error : identifier '__attribute__'
if_perl.xs(158) : error C2059: syntax error : ';'
if_perl.xs(158) : error C2182: 'noreturn' : illegal use of type 'void'
if_perl.xs(159) : error C2061: syntax error : identifier '__attribute__'
if_perl.xs(159) : error C2059: syntax error : ';'
if_perl.xs(159) : error C2182: 'noreturn' : illegal use of type 'void'
if_perl.xs(239) : error C2065: 'dll_Perl_croak' : undeclared identifier
if_perl.xs(240) : error C2065: 'dll_Perl_croak_nocontext' : undeclared
identifier
if_perl.c(799) : error C2063: 'dll_Perl_croak' : not a function
if_perl.c(839) : error C2063: 'dll_Perl_croak' : not a function
if_perl.c(859) : error C2063: 'dll_Perl_croak' : not a function
if_perl.c(878) : error C2063: 'dll_Perl_croak' : not a function
if_perl.c(1012) : error C2063: 'dll_Perl_croak' : not a function
if_perl.c(1020) : error C2063: 'dll_Perl_croak_nocontext' : not a function
if_perl.c(1023) : error C2063: 'dll_Perl_croak_nocontext' : not a function
if_perl.c(1038) : error C2063: 'dll_Perl_croak' : not a function
if_perl.c(1047) : error C2063: 'dll_Perl_croak_nocontext' : not a function
if_perl.c(1050) : error C2063: 'dll_Perl_croak_nocontext' : not a function
...
Best regards,
Liu Yubao