From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 5906 invoked by alias); 19 Mar 2002 09:36:01 -0000 Mailing-List: contact gcc-prs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-prs-owner@gcc.gnu.org Received: (qmail 5877 invoked by uid 71); 19 Mar 2002 09:36:01 -0000 Date: Tue, 19 Mar 2002 01:36:00 -0000 Message-ID: <20020319093601.5876.qmail@sources.redhat.com> To: nobody@gcc.gnu.org Cc: gcc-prs@gcc.gnu.org, From: Zack Weinberg Subject: Re: c++/5997: CPLUS_INCLUDE_PATH not working properly Reply-To: Zack Weinberg X-SW-Source: 2002-03/txt/msg00699.txt.bz2 List-Id: The following reply was made to PR c++/5997; it has been noted by GNATS. From: Zack Weinberg To: Jorgo Bakker Cc: Neil Booth , gcc-gnats@gcc.gnu.org, gcc-bugs@gcc.gnu.org Subject: Re: c++/5997: CPLUS_INCLUDE_PATH not working properly Date: Tue, 19 Mar 2002 01:27:05 -0800 On Tue, Mar 19, 2002 at 10:06:12AM +0100, Jorgo Bakker wrote: > > > > You're quite right - I'd not tested the PR, assuming it must be right. > > I just looked for when the last time this area of code was changed. I > > can't reproduce it either. jbakker, can you elaborate on what problem > > you're seeing? > > > > Neil. > > Hmm, I started to doubt myself, and indeed: on Linux it works fine. However, > my sun-sparc-solaris2.[6-8] platforms all give the following output. > It seems as if CPLUS_INCLUDE_PATH is interpreted as a PATH to C-include files > only; hence the error. Oh! I see what the problem is now. > . /data/Users/jbakker/tmp/gcc-bug/foo/tmp/include/foo.h > In file included from main.cc:1: > /data/Users/jbakker/tmp/gcc-bug/foo/tmp/include/foo.h:5: declaration of C > function `void handle(float)' conflicts with > /data/Users/jbakker/tmp/gcc-bug/foo/tmp/include/foo.h:4: previous declaration > `void handle(int)' here It is reading the header file you asked it to, but interpreting that file as a "system header" - and on sparc-sun-solaris2.x, "system headers" get treated as wrapped in an implicit extern "C". I'm not inclined to change what *_INCLUDE_PATH do - there are probably people out there depending on having them be system headers. You can work around the problem by putting extern "C++" { ... } around the entire content of your header file. Also, the sparc-sun-solaris* configurations should probably be changed to disable the implicit extern "C". If I remember correctly, Solaris has had extern "C" in its header files from day one. zw