X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/ab1478f7146843f73af03fea79b380f501564e86..e5272a465a9fa5aa2582c8b5750ca65c76ead2e0:/XSUB.h diff --git a/XSUB.h b/XSUB.h index 5a5fc63..4e439f1 100644 --- a/XSUB.h +++ b/XSUB.h @@ -48,16 +48,15 @@ Used to access elements on the XSUB's stack. =for apidoc AmU||XS Macro to declare an XSUB and its C parameter list. This is handled by -C. +C. It is the same as using the more explicit XS_EXTERNAL macro. =for apidoc AmU||XS_INTERNAL Macro to declare an XSUB and its C parameter list without exporting the symbols. This is handled by C and generally preferable over exporting the XSUB -symbols unnecessarily. This is handled by C. +symbols unnecessarily. =for apidoc AmU||XS_EXTERNAL Macro to declare an XSUB and its C parameter list explicitly exporting the symbols. -This is handled by C. =for apidoc Ams||dAX Sets up the C variable. @@ -131,7 +130,7 @@ is a lexical $_ in scope. #undef XS_INTERNAL #if defined(__CYGWIN__) && defined(USE_DYNAMIC_LOADING) # define XS_EXTERNAL(name) __declspec(dllexport) XSPROTO(name) -# define XS_INTERNAL(name) __declspec(dllexport) STATIC XSPROTO(name) +# define XS_INTERNAL(name) STATIC XSPROTO(name) #endif #if defined(__SYMBIAN32__) # define XS_EXTERNAL(name) EXPORT_C XSPROTO(name) @@ -144,7 +143,7 @@ is a lexical $_ in scope. # else # ifdef __cplusplus # define XS_EXTERNAL(name) extern "C" XSPROTO(name) -# define XS_INTERNAL(name) extern "C" STATIC XSPROTO(name) +# define XS_INTERNAL(name) static XSPROTO(name) # else # define XS_EXTERNAL(name) XSPROTO(name) # define XS_INTERNAL(name) STATIC XSPROTO(name) @@ -152,8 +151,9 @@ is a lexical $_ in scope. # endif #endif -/* We do not export xsub symbols any more by default */ -#define XS(name) XS_INTERNAL(name) +/* We do export xsub symbols by default for the public XS macro. + * Try explicitly using XS_INTERNAL/XS_EXTERNAL instead, please. */ +#define XS(name) XS_EXTERNAL(name) #define dAX const I32 ax = (I32)(MARK - PL_stack_base + 1)