15 мая 2023 года "Исходники.РУ" отмечают своё 23-летие!
Поздравляем всех причастных и неравнодушных с этим событием!
И огромное спасибо всем, кто был и остаётся с нами все эти годы!

Главная Форум Журнал Wiki DRKB Discuz!ML Помощь проекту


C++ namespace's and the Dev. Studio Browser

Randy Sales -- rsc@halcyon.com
Tuesday, October 15, 1996

Environment: VC 4.1, NT 3.51

I am attempting to use namespace's with reasonable results
but I'm a little discouraged to find that the Dev. Studio
browser seems to have no knowledge of defined namespace's
and is unable to accurately determine the correct definition
of a variable defined in two separate namespace declarations.
Is there something additional required to make the
browser namespace aware.

Randy Sales

-- 
RS Consulting
1521 1/2 Cedar Street
Everett, WA 98201

Phone   206-259-1056
Fax     206-259-1315
email   rsc@halcyon.com



Bauer@lai.unisinos.tche.br
Thursday, October 17, 1996


According to the Microsoft Knowledge Base article Q140439,  Visual C++
4.1 doesn't show classes defined inside a namespace and this is a bug. I
believe the problem extends to the variable definitions.

Best regards,

Carlos Henrique Bauer

Universidade do Vale do Rio dos Sinos - UNISINOS
Nucleo de Pesquisa e Apoio `a Industria - NAI
Laboratorio de Automacao Industrial - LAI
------------------------------------------------
http://lai.unisinos.tche.br
Av. Unisinos, 950             Phone: 55515903333
93022-000 Sao Leopoldo RS     FAX:   55515921035
Brazil


>----------
>From: 	Randy Sales[SMTP:rsc@halcyon.com]
>Sent: 	Terca-feira, 15 de Outubro de 1996 14:03
>To: 	mfc-l@netcom.com
>Subject: 	C++ namespace's and the Dev. Studio Browser
>
>Environment: VC 4.1, NT 3.51
>
>I am attempting to use namespace's with reasonable results
>but I'm a little discouraged to find that the Dev. Studio
>browser seems to have no knowledge of defined namespace's
>and is unable to accurately determine the correct definition
>of a variable defined in two separate namespace declarations.
>Is there something additional required to make the
>browser namespace aware.
>
>Randy Sales
>
>-- 
>RS Consulting
>1521 1/2 Cedar Street
>Everett, WA 98201
>
>Phone   206-259-1056
>Fax     206-259-1315
>email   rsc@halcyon.com
>



Randy Sales -- rsc@halcyon.com
Friday, October 18, 1996

Carlos,

Thanks for the feedback, I should have mentioned
that I had read KB Q140439 in my original question.  But
I don't think this is related.  Fact is, I can ask the
browser for the Definitions and References of a variable
defined in a namespace and it will open the dialog and
show me all the defs and refs.  But if I place the caret
in a multiply defined namespace variable and press F11
(defined as BrowseGoToDefinition) I should be given the
opportunity to resolve the ambiguity of mutliple definitions
before being taken to the definition of the variable.
Instead, I am immediately taken to one of the several
definitions with no indication that there are others.
This could be very misleading to someone later needing
to maintain this source code.  Hope this clarification
helps.

Thanks,
Randy Sales

Bauer@lai.unisinos.tche.br wrote:
> 
> According to the Microsoft Knowledge Base article Q140439,  Visual C++
> 4.1 doesn't show classes defined inside a namespace and this is a bug. I
> believe the problem extends to the variable definitions.
> 
> Best regards,
> 
> Carlos Henrique Bauer
> 
> Universidade do Vale do Rio dos Sinos - UNISINOS
> Nucleo de Pesquisa e Apoio `a Industria - NAI
> Laboratorio de Automacao Industrial - LAI
> ------------------------------------------------
> http://lai.unisinos.tche.br
> Av. Unisinos, 950             Phone: 55515903333
> 93022-000 Sao Leopoldo RS     FAX:   55515921035
> Brazil
> 
> >----------
> >From:  Randy Sales[SMTP:rsc@halcyon.com]
> >Sent:  Terca-feira, 15 de Outubro de 1996 14:03
> >To:    mfc-l@netcom.com
> >Subject:       C++ namespace's and the Dev. Studio Browser
> >
> >Environment: VC 4.1, NT 3.51
> >
> >I am attempting to use namespace's with reasonable results
> >but I'm a little discouraged to find that the Dev. Studio
> >browser seems to have no knowledge of defined namespace's
> >and is unable to accurately determine the correct definition
> >of a variable defined in two separate namespace declarations.
> >Is there something additional required to make the
> >browser namespace aware.
> >
> >Randy Sales
> >
> >--
> >RS Consulting
> >1521 1/2 Cedar Street
> >Everett, WA 98201
> >
> >Phone   206-259-1056
> >Fax     206-259-1315
> >email   rsc@halcyon.com
> >

-- 
RS Consulting
1521 1/2 Cedar Street
Everett, WA 98201

Phone   206-259-1056
Fax     206-259-1315
email   rsc@halcyon.com



Bauer@lai.unisinos.tche.br
Wednesday, October 23, 1996

Randy,

I decided to create a small application with  AppWizard to make some
tests with the Visual C++ browser. The name of  the app is
NameSpace.

At the begining of the file NameSpaceView.cpp was added the following
 namespace and variable declarations:

namespace test
{
	extern int xy;
};

extern int xy;

As you can see, there are two variables xy declared in two
diferent namespaces: one in the test namespace and another in the
global namespace.

In the CNameSpaceView constructor I added the code just for testing the
browser behavior. It seems like this:

CNameSpaceView::CNameSpaceView()
{
	test::xy = 0;
	xy = 0;
}


Both variables were defined at the end of the file as it follows:

namespace test {
	int xy;
};
 
int xy;
 

After building the project with the `Build Browse Info File' option
enabled, I asked the browser, through the F11 key, to show me the
definition of the variable test::xy used inside the CNameSpaceView
constructor.

The cursor jumped to the definition inside test namespace as it was
expected. Then I asked the browser to show me the definition of global
namespace's xy variable. The cursor jumped to the same place as before,
this time, the wrong namespace.

Please note that the definition inside namespace test is the definition
of xy that appears first in the NameSpaceView File.

So, I inverted the position of both definitions of xy, in this way:

int xy;

namespace test {
	int xy;
};

And then repeated the same tests. In both, the browser shows me the
global namespace xy definition, the first definition in the file.

It seems to me that the browser is ignoring the namespaces, and jumping
to the first definition in the global namespace and at global scope it
finds.

I interpret the KB Q140439 as a statement of Microsoft that Visual C++
has some intrisec problems dealing with namespaces, no matter if it is
in the class view or in the browser. 

I agree with you that this could be very misleading to someone 
maintaining  the code later, but I'm afraid  we  have to wait for a fix
from
Microsoft.


Carlos Henrique Bauer

Universidade do Vale do Rio dos Sinos - UNISINOS
Nucleo de Pesquisa e Apoio `a Industria - NAI
Laboratorio de Automacao Industrial - LAI
------------------------------------------------
http://lai.unisinos.tche.br
Av. Unisinos, 950             Phone: 55515903333
93022-000 Sao Leopoldo RS     FAX:   55515921035
Brazil


>----------
>From: 	Randy Sales[SMTP:rsc@halcyon.com]
>Sent: 	Sexta-feira, 18 de Outubro de 1996 11:58
>To: 	mfc-l@netcom.com
>Subject: 	Re: C++ namespace's and the Dev. Studio Browser
>
>Carlos,
>
>Thanks for the feedback, I should have mentioned
>that I had read KB Q140439 in my original question.  But
>I don't think this is related.  Fact is, I can ask the
>browser for the Definitions and References of a variable
>defined in a namespace and it will open the dialog and
>show me all the defs and refs.  But if I place the caret
>in a multiply defined namespace variable and press F11
>(defined as BrowseGoToDefinition) I should be given the
>opportunity to resolve the ambiguity of mutliple definitions
>before being taken to the definition of the variable.
>Instead, I am immediately taken to one of the several
>definitions with no indication that there are others.
>This could be very misleading to someone later needing
>to maintain this source code.  Hope this clarification
>helps.
>
>Thanks,
>Randy Sales
>
>




| Вернуться в корень Архива |