diff options
-rw-r--r-- | embed.h | 9 | ||||
-rwxr-xr-x | embed.pl | 9 | ||||
-rw-r--r-- | pod/perlembed.pod | 18 |
3 files changed, 32 insertions, 4 deletions
@@ -16,7 +16,10 @@ /* (Doing namespace management portably in C is really gross.) */ -/* NO_EMBED is no longer supported. i.e. EMBED is always active. */ +/* NO_EMBED is no longer supported. i.e. EMBED is always active-- + * but you can define PERL_HIDE_SHORT_NAMES to achieve the same. */ + +#ifndef PERL_HIDE_SHORT_NAMES /* Hide global symbols */ @@ -4944,6 +4947,8 @@ #endif /* PERL_IMPLICIT_CONTEXT */ +#endif /* #ifndef PERL_HIDE_SHORT_NAMES */ + /* Compatibility stubs. Compile extensions with -DPERL_NOCOMPAT to disable them. @@ -4985,7 +4990,7 @@ an extra argument but grab the context pointer using the macro dTHX. */ -#if defined(PERL_IMPLICIT_CONTEXT) +#if defined(PERL_IMPLICIT_CONTEXT) && !defined(PERL_HIDE_SHORT_NAMES) # define croak Perl_croak_nocontext # define deb Perl_deb_nocontext # define die Perl_die_nocontext @@ -316,7 +316,10 @@ print EM do_not_edit ("embed.h"), <<'END'; /* (Doing namespace management portably in C is really gross.) */ -/* NO_EMBED is no longer supported. i.e. EMBED is always active. */ +/* NO_EMBED is no longer supported. i.e. EMBED is always active-- + * but you can define PERL_HIDE_SHORT_NAMES to achieve the same. */ + +#ifndef PERL_HIDE_SHORT_NAMES /* Hide global symbols */ @@ -428,6 +431,8 @@ print EM <<'END'; #endif /* PERL_IMPLICIT_CONTEXT */ +#endif /* #ifndef PERL_HIDE_SHORT_NAMES */ + END print EM <<'END'; @@ -472,7 +477,7 @@ print EM <<'END'; an extra argument but grab the context pointer using the macro dTHX. */ -#if defined(PERL_IMPLICIT_CONTEXT) +#if defined(PERL_IMPLICIT_CONTEXT) && !defined(PERL_HIDE_SHORT_NAMES) # define croak Perl_croak_nocontext # define deb Perl_deb_nocontext # define die Perl_die_nocontext diff --git a/pod/perlembed.pod b/pod/perlembed.pod index b9aae2d87a..24385dd354 100644 --- a/pod/perlembed.pod +++ b/pod/perlembed.pod @@ -1038,6 +1038,24 @@ also need this path so it knows where to find Perl include files. This path can be added via the Tools -> Options -> Directories menu. Finally, select Build -> Build interp.exe and you're ready to go. +=head1 Hiding Perl_ + +If you completely hide the short forms forms of the Perl public API, +add -DPERL_HIDE_SHORT_NAMES to the compilation flags. This means that +for example instead of writing + + warn("%d bottles of beer on the wall", bottlecount); + +you will have to write the explicit full form + + Perl_warn(aTHX_ "%d bottles of beer on the wall", bottlecount); + +(See L<perlguts/Background and PERL_IMPLICIT_CONTEXT for the explanation +of the C<aTHX_>.> ) Hiding the short forms is very useful for avoiding +all sorts of nasty (C preprocessor or otherwise) conflicts with other +software packages (Perl defines about 2400 APIs with these short names, +take or leave few hundred, so there certainly is room for conflict.) + =head1 MORAL You can sometimes I<write faster code> in C, but |