On Mon, 18 Jun 2012, Steven Bosscher wrote: > For targets that do not define NO_IMPLICIT_EXTERN_C, GCC assumes that > included system headers are implicitly wrapped in 'extern "C" {...}'. > I could not find where this target macro was introduced, but it is > very old (it is already mentioned in FSFChangeLog.10 for a change in > 1995). AFAICT, today all supported targets have C++-compatible headers
May have been introduced by: Fri Nov 5 05:48:04 1993 Richard Stallman (r...@mole.gnu.ai.mit.edu) * cccp.c (main): Handle NO_IMPLICIT_EXTERN_C. > (according to one comment, even hpux8 had C++-compatible system > headers :-), so NO_IMPLICIT_EXTERN_C shouldn't be necessary anymore. It was previously said that AIX headers needed it <http://gcc.gnu.org/ml/gcc/2005-05/msg00381.html>. That of course was AIX headers as of 2005; I don't know whether seven years later any version of AIX supported by GCC trunk still needs this. > The only target that explicitly undefines NO_IMPLICIT_EXTERN_C is > sparc64-openbsd, and I find it hard to believe that the system headers > on openbsd are not also already C++-compatible. Marc, could you have a > look at this, please? What targets (such as AIX?) did not explicitly undefine it, but did not get a definition from any header they used either? It's quite likely some such targets *should* have had NO_IMPLICIT_EXTERN_C defined, but not necessarily all of them. -- Joseph S. Myers jos...@codesourcery.com