From 514eb96b306964a09b334466c64855b4b5ed618c Mon Sep 17 00:00:00 2001 From: Jay Krell Date: Sat, 17 Feb 2018 21:23:34 -0800 Subject: [PATCH] Fiddle with linkage to make extra/gc.c valid C++ code Issue #206 (bdwgc). Specifically: int i; int i = 0; is not valid, but: extern int i; int i = 0; is valid. Adding static would also be desirable here but requires a larger change. * extra/gc.c (GC_INNER, GC_EXTERN): Do not define if __cplusplus; add comment and TODO item. --- extra/gc.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/extra/gc.c b/extra/gc.c index ea3648e62..6cfc7d47e 100644 --- a/extra/gc.c +++ b/extra/gc.c @@ -27,10 +27,13 @@ /* for GC and the client otherwise GC_thread_exit_proc() is not */ /* guaranteed to be invoked (see the comments in pthread_start.c). */ - -#define GC_INNER STATIC -#define GC_EXTERN GC_INNER +#ifndef __cplusplus + /* static is desirable here for more efficient linkage. */ + /* TODO: Enable this in case of the compilation as C++ code. */ +# define GC_INNER STATIC +# define GC_EXTERN GC_INNER /* STATIC is defined in gcconfig.h. */ +#endif /* Small files go first... */ #include "../backgraph.c"