aboutsummaryrefslogtreecommitdiffstats
path: root/ws_symbol_export.h
diff options
context:
space:
mode:
authorGuy Harris <guy@alum.mit.edu>2013-07-03 01:43:39 +0000
committerGuy Harris <guy@alum.mit.edu>2013-07-03 01:43:39 +0000
commit5d87a8c46171f572568db5a47c093423482e342f (patch)
tree07a700792f034ede91c707b927cd94f4887d5394 /ws_symbol_export.h
parenta3543e605022d4385d536cd4f916d9a29051e637 (diff)
WS_DLL_PUBLIC is now always WS_DLL_PUBLIC_NOEXTERN with "extern" added;
just define WS_DLL_PUBLIC_NOEXTERN inside the ifdefs, and define WS_DLL_PUBLIC as WS_DLL_PUBLIC_NOEXTERN followed by "extern". Then rename WS_DLL_PUBLIC_NOEXTERN to WS_DLL_PUBLIC_DEF, to clarify that it's what should be used for definitions; at least on Windows, you *have* to use it when declaring arrays without a size, and, whilst you might be able to use WS_DLL_PUBLIC for definitions of functions and perhaps data definitions other than no-size arrays, it might be clearer to rename WS_DLL_PUBLIC to WS_DLL_PUBLIC_DECL and use it only for declarations. svn path=/trunk/; revision=50334
Diffstat (limited to 'ws_symbol_export.h')
-rw-r--r--ws_symbol_export.h34
1 files changed, 17 insertions, 17 deletions
diff --git a/ws_symbol_export.h b/ws_symbol_export.h
index e2c0e6f2fa..5654ad1243 100644
--- a/ws_symbol_export.h
+++ b/ws_symbol_export.h
@@ -34,8 +34,8 @@
#undef WS_DLL_PUBLIC
#endif
-#ifdef WS_DLL_PUBLIC_NOEXTERN
-#undef WS_DLL_PUBLIC_NOEXTERN
+#ifdef WS_DLL_PUBLIC_DEF
+#undef WS_DLL_PUBLIC_DEF
#endif
#ifdef WS_DLL_LOCAL
@@ -52,7 +52,7 @@
/* Compiling for Windows, so we use the Windows DLL declarations. */
#ifdef WS_BUILD_DLL
/*
- * Building a library; for all definitions, we want dllexport, and
+ * Building a DLL; for all definitions, we want dllexport, and
* (presumably so source from DLL and source from a program using the
* DLL can both include a header that declares APIs and exported data
* for the DLL), for declarations, either dllexport or dllimport will
@@ -60,15 +60,13 @@
*/
#ifdef __GNUC__
/* GCC */
-#define WS_DLL_PUBLIC __attribute__ ((dllexport)) extern
-#define WS_DLL_PUBLIC_NOEXTERN __attribute__ ((dllexport))
+#define WS_DLL_PUBLIC_DEF __attribute__ ((dllexport))
#else /* ! __GNUC__ */
/*
* Presumably MSVC.
* Note: actually gcc seems to also support this syntax.
*/
-#define WS_DLL_PUBLIC __declspec(dllexport) extern
-#define WS_DLL_PUBLIC_NOEXTERN __declspec(dllexport)
+#define WS_DLL_PUBLIC_DEF __declspec(dllexport)
#endif /* __GNUC__ */
#else /* WS_BUILD_DLL */
/*
@@ -82,19 +80,16 @@
*/
#ifdef __GNUC__
/* GCC */
-#define WS_DLL_PUBLIC __attribute__ ((dllimport)) extern
-#define WS_DLL_PUBLIC_NOEXTERN __attribute__ ((dllimport))
+#define WS_DLL_PUBLIC_DEF __attribute__ ((dllimport))
#elif ! (defined ENABLE_STATIC) /* ! __GNUC__ */
/*
* Presumably MSVC.
* Note: actually gcc seems to also support this syntax.
*/
-#define WS_DLL_PUBLIC __declspec(dllimport) extern
-#define WS_DLL_PUBLIC_NOEXTERN __declspec(dllimport)
+#define WS_DLL_PUBLIC_DEF __declspec(dllimport)
#else /* ! __GNUC__ && ENABLE_STATIC */
/* presumably MSVC */
-#define WS_DLL_PUBLIC extern
-#define WS_DLL_PUBLIC_NOEXTERN
+#define WS_DLL_PUBLIC_DEF
#endif /* __GNUC__ */
#endif /* WS_BUILD_DLL */
#define WS_DLL_LOCAL
@@ -106,14 +101,19 @@
* with GCC 4 or later.
*/
#if __GNUC__ >= 4
-#define WS_DLL_PUBLIC __attribute__ ((visibility ("default"))) extern
-#define WS_DLL_PUBLIC_NOEXTERN __attribute__ ((visibility ("default")))
+#define WS_DLL_PUBLIC_DEF __attribute__ ((visibility ("default")))
#define WS_DLL_LOCAL __attribute__ ((visibility ("hidden")))
#else /* ! __GNUC__ >= 4 */
- #define WS_DLL_PUBLIC extern
- #define WS_DLL_PUBLIC_NOEXTERN
+ #define WS_DLL_PUBLIC_DEF
#define WS_DLL_LOCAL
#endif /* __GNUC__ >= 4 */
#endif
+/*
+ * Use this for declarations; it can also be used for exported
+ * *function* definitions, but must not be used for exported *data*
+ * definitions.
+ */
+#define WS_DLL_PUBLIC WS_DLL_PUBLIC_DEF extern
+
#endif /* SYMBOL_EXPORT_H */