This is the mail archive of the
gcc-help@gcc.gnu.org
mailing list for the GCC project.
Re: error: 'comp' was not declared in this scope
- From: "Divy Kanungo" <divyk at bgnet dot bgsu dot edu>
- To: "John Love-Jensen" <eljay at adobe dot com>, gcc-help at gcc dot gnu dot org
- Date: Wed, 14 Feb 2007 21:19:12 -0500
- Subject: Re: error: 'comp' was not declared in this scope
Hi Eljay,
Yes, I was not building the libbg.so myself. I guess it was
built with GCC 3.4.3
I am triying to rebuild the whole package with GCC 4.1.1 but
again the scope problem is occuring and this time with 'EBUSY'
error flag.
error: 'EBUSY' was not declared in this scope
on this line:
if(pthread_mutex_trylock(&lock) != EBUSY)
Since, EBUSY is standard error flag and there shouldn't be a
problem with its scope. What could be wrong here?
Divy.
---------Included Message----------
>Date: 14-Feb-2007 14:59:34 -0500
>From: "John Love-Jensen" <eljay@adobe.com>
>To: "Divy Kanungo" <divyk@bgnet.bgsu.edu>, "MSX to GCC" <gcc-
help@gcc.gnu.org>
>Subject: Re: error: 'comp' was not declared in this scope
>
>Hi Divy,
>
>> So, is it that the new gcc version does not allow directly
using the protected
>variabled declared in parent class?
>
>I may be mistaken, but I think that the issue has to do with
two-phased
>lookup. GCC 4.x implements two-phased lookup, as per ISO 14882.
>
>You could also have accessed c by:
>
>this->c
>
>...or...
>
>std::priority_queue< T, std::vector<T>, PLess<T> >::c
>
>...but I find the using statement to be the quickest & best
solution.
>
>> (because that worked fine when I had gcc 3.4.3)
>
>GCC 3.4.3 did not implement two-phased lookup. (Or perhaps it
was just that
>GCC 3.4.3 did not fully implement two-phased lookup.)
>
>I'm not sure of all the intricate details between...
>ADL (argument-dependent name lookup; aka Koenig lookup)
>OL (ordinary name lookup)
>FNI (friend name injection)
>two-phase lookup (aka non-dependent lookup)
>
>From <http://safari5.bvdep.com/0201734842/glossary1> ...
>
>two-phase lookup
>The name lookup mechanism used for names in template. The "two
phases" are
>(1) the phase during which a template definition is first
encountered by a
>compiler, and (2) the instantiation of a template. Nondependent
names are
>looked up only in the first phase, but during this first phase
nondependent
>base classes are not considered. Dependent names with a scope
qualifier (::)
>are looked up only in the second phase. Dependent names without
a scope
>qualifier may be looked up in both phases, but in the second
phase only
>argument-dependent lookup is performed.
>
>> Also now I have new issues when I compile the program. I get
the following
>linker errors:
>
>That's weird. It almost looks like you are linking with gcc
instead of g++.
>
>How are you building libbg.so with GCC 4.x?
>
>Or if you are not building libbg.so yourself, it then looks
like libbg.so
>was not built with GCC 4.x.
>
>HTH,
>--Eljay
>
>
>
---------End of Included Message----------