[Python-Dev] Looking for a DL_xxPORT macro export

Fred L. Drake, Jr. fdrake@beopen.com
Fri, 25 Aug 2000 22:49:30 -0400 (EDT)


Tim Peters writes:
 > Somebody recently added DL_IMPORT macros to two module init functions that
 > already used their names in DL_EXPORT macros (pyexpat.c and parsermodule.c).

  That was me.

 > On Windows, that yields the result I (naively?) expected:  compiler warnings
 > about inconsistent linkage declarations.

  Ouch.

 > This is your basic Undocumented X-Platform Macro Hell, and I suppose the
 > Windows build should be #define'ing USE_DL_EXPORT for these subprojects
 > anyway (?), but if I don't hear a good reason for *why* both macros are used
 > on the same name in the same file, I'll be irresistibly tempted to just
 > delete the new DL_IMPORT lines.  That is, why would we *ever* use DL_IMPORT
 > on the name of a module init function?  They only exist to be exported.

  Here's how I arrived at it, but appearantly this doesn't make sense,
because Windows has too many linkage options.  ;)
  Compiling with gcc using the -Wmissing-prototypes option causes a
warning to be printed if there isn't a prototype at all:

cj42289-a(.../linux-beowolf/Modules); gcc -fpic  -g -ansi -Wall -Wmissing-prototypes  -O2 -I../../Include -I.. -DHAVE_CONFIG_H -c ../../Modules/parsermodule.c
../../Modules/parsermodule.c:2852: warning: no previous prototype for `initparser'

  I used the DL_IMPORT since that's how all the prototypes in the
Python headers are set up.  I can either change these to "normal"
prototypes (no DL_xxPORT macros), DL_EXPORT prototypes, or remove the
prototypes completely, and we'll just have to ignore the warning.
  If you can write a few sentences explaining each of these macros and
when they should be used, I'll make sure they land in the
documentation.  ;)


  -Fred

-- 
Fred L. Drake, Jr.  <fdrake at beopen.com>
BeOpen PythonLabs Team Member