On Sun, May 24, 2009 at 11:13 PM, Ian Lance Taylor <i...@google.com> wrote: > Joern Rennecke <amyl...@spamcop.net> writes: > >> Quoting Ian Lance Taylor <i...@google.com>: >>> Joern Rennecke <amyl...@spamcop.net> writes: >>>> * config/sh/sh.c (sh_attribute_table): Use extern in forward >>>> declaration. >>>> Common issue with declaring/defining const variables in C++. >>> >>> I've been doing this as >>> >>> #ifdef __cplusplus >>> extern >>> #endif >> >> These #ifdefs sprinkled over the code are awkward. Could we use a #define >> for this? E.g. put in system.h >> #ifdef __cplusplus >> #define CONST_VAR_DECL extern const >> #else >> #define CONST_VAR_DECL const >> #endif > > Yes, that is certainly the way to go if it is in fact not safe to use > "extern const int i = 1;" for all C compilers. I hadn't planned to deal > with this issue yet, but since you bring it up, we should decide whether > that construct is safe, or whether we need the macro. > > Ian >
I believe extenr const' should be pretty safe in any C90 compiler. Do we know a compiler that does not handle that correctly?