I agree mostly. Using
#include "perl.h"
#include "XSUB.h"
#undef XSPROTO
#define XSPROTO(name) void name(pTHX_ struct cv* cv)
instead of
#define CV __perl_CV
#include "perl.h"
#include "XSUB.h"
#undef XSPROTO
#define XSPROTO(name) void name(pTHX_ __perl_CV* cv)
#undef CV
is much more elegant and better. But both variants should work.
However
SWIG_init is declared with two parameters.
In '
SWIGEXPORT void SWIG_init (pTHXo_ CV* cv);'
macro '
pTHHXo_' expands to '
PerlInterpreter*,'.With the comma at the end there are suddenly two parameters.