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

Reply via email to