From 497de44e36d5ec43e5b61ff644bb7207b23c225e Mon Sep 17 00:00:00 2001 From: mquinson Date: Thu, 8 Feb 2007 15:54:30 +0000 Subject: [PATCH 1/1] Document a bit the tricky symbol definition for windows, and remove useless tabs git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@3121 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- include/xbt/misc.h | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/include/xbt/misc.h b/include/xbt/misc.h index 96a6f7510b..186611753b 100644 --- a/include/xbt/misc.h +++ b/include/xbt/misc.h @@ -69,27 +69,35 @@ #endif /* Handle import/export stuff - * Rational: + * + * Rational of XBT_PUBLIC: * * If you build the DLL you must pass the right value of XBT_PUBLIC in the project : to do this you must define the DLL_EXPORT macro * * If you do a static compilation, you must define the macro DLL_STATIC * * If you link your code against the DLL, this file defines the macro to '__declspec(dllimport)' for you * * If you compile under unix, this file defines the macro to 'extern', even if it's not mandatory with modern compilers + * + * Rational of XBT_PUBLIC_NO_IMPORT: + * * This is for symbols which must be exported in the DLL, but not imported from it. + * This is obviously useful for initialized globals (which cannot be extern or similar). + * This is also used in the log mecanism where a macro creates the variable automatically. + * When the macro is called from within SimGrid, the symbol must be exported, but when called + * from within the client code, it must not try to retrieve the symbol from the DLL since it's not in there. */ #ifdef DLL_EXPORT -# define XBT_PUBLIC(type) __declspec(dllexport) type +# define XBT_PUBLIC(type) __declspec(dllexport) type # define XBT_PUBLIC_NO_IMPORT(type) __declspec(dllexport) type #else # ifdef DLL_STATIC -# define XBT_PUBLIC(type) type +# define XBT_PUBLIC(type) type # define XBT_PUBLIC_NO_IMPORT(type) type # else # ifdef _WIN32 -# define XBT_PUBLIC(type) __declspec(dllimport) type +# define XBT_PUBLIC(type) __declspec(dllimport) type # define XBT_PUBLIC_NO_IMPORT(type) type -# else -# define XBT_PUBLIC(type) extern type +# else +# define XBT_PUBLIC(type) extern type # define XBT_PUBLIC_NO_IMPORT(type) type # endif # endif -- 2.20.1