Author |
Topic |
|
kai
Junior Member
11 Posts |
Posted - Oct 30 2006 : 06:35:03 AM
|
Hello,
in my current project (C++, VS8, intellisense disabled due to performance issues) i often have the problem that Alt-G finds the definition of symbols in a header file (e.g. member functions) but does not seem to see the implementation. Very often i find myself switching manually (Alt-O) from HPP to CPP files and then do a local search for the implementation.
This happened also in earlier versions, it's not a new 'feature' of the 1540 release.
Let me know if you need further info.
/Kai
|
|
endgame
Junior Member
21 Posts |
|
kai
Junior Member
11 Posts |
Posted - Oct 30 2006 : 07:53:25 AM
|
No, all files are part of my workspace. In addition, even if i manually reparse the file which contains the implementation Alt-G still does not find anything. The solution i'm working on is quite big (~8000 files). This seems to be a similarity with endgame's problem. |
|
|
feline
Whole Tomato Software
United Kingdom
19020 Posts |
Posted - Oct 30 2006 : 12:55:59 PM
|
Is there any particular pattern to which functions alt-g does not work with?
e.g. if you are using Qt and signals and slots then you will have code that looks like:
class felineTest : public QDialog
{
public slots:
void slotOne();
void slotTwo();
};
Since Qt uses macro's to fix the "slots" word this compiles, but it is not standard C++ syntax, and can confuse VA.
If you look in FSIW do you see these functions listed? If you look in OFIW are the cpp files listed? |
zen is the art of being at one with the two'ness |
|
|
kai
Junior Member
11 Posts |
Posted - Oct 31 2006 : 03:36:22 AM
|
We actually do have a lot of macros in a framework we're using. However, for some of the files which are 'infected' with these framework definitions Alt-G works fine. On the other hand, i just tried Alt-G with a member function of a class which is really just plain C++. The files (hpp/cpp) are listed in the FSIW dialog. And in OFIW i see two entries for the function. One of the entries gets me to the definition, the other to the implementation - fine! But even though VAssistX seems to be aware of the implementation, pressing Alt-G in the header (or in another solution file) still only jumps to the definition in the header file.
It's strange, for some files it works, for others it doesn't - i've yet to find a pattern behind this.
Here the infos from the About dialog:
VA_X.dll file version 10.3.1540.0 built 2006.10.27 Licensed to: VA X: xxxxxx (1-user license) Support ends 2007.08.12 VAOpsWin.dll version 1.3.3.7 VATE.dll version 1.0.5.9 DevEnv.exe version 8.0.50727.363 msenv.dll version 8.0.50727.363 Font: Courier New 13(Pixels) Comctl32.dll version 5.81.4968.2500 Windows 2000 5.0 Build 2195 Service Pack 4 Single processor
Platform: Win32 Stable Includes: C:\\Programme\\MicrosoftVisualStudio8\\VC\\include; C:\\Programme\\MicrosoftVisualStudio8\\VC\\atlmfc\\include; C:\\Programme\\MicrosoftVisualStudio8\\VC\\PlatformSDK\\include; C:\\Programme\\MicrosoftVisualStudio8\\SDK\\v2.0\\include;
Library Includes: C:\\Programme\\MicrosoftVisualStudio8\\VC\\atlmfc\\src\\mfc; C:\\Programme\\MicrosoftVisualStudio8\\VC\\atlmfc\\src\\mfcm; C:\\Programme\\MicrosoftVisualStudio8\\VC\\atlmfc\\src\\atl; C:\\Programme\\MicrosoftVisualStudio8\\VC\\crt\\src;
Other Includes:
|
|
|
kai
Junior Member
11 Posts |
Posted - Oct 31 2006 : 04:40:53 AM
|
I've tried to narrow this down a bit and now have a project consisting of just one simple class AltGTest which is defined in AltGTest.h and has an implementation in AltGTest.cpp. Still Alt-G on getStream() in the header does not get me to the implementation ...
AltGTest.h:
#ifndef _ALT_G_TEST_H_
#define _ALT_G_TEST_H_
typedef unsigned char uint8_t;
namespace altg
{
class AltGTest
{
public:
AltGTest();
virtual const uint8_t * getStream() const;
};
}
#endif
AltGTest.cpp:
#include "AltGTest.h"
using namespace altg;
AltGTest::AltGTest()
{
}
const uint8_t * AltGTest::getStream() const
{
return 0;
}
|
Edited by - kai on Oct 31 2006 2:05:10 PM |
|
|
kai
Junior Member
11 Posts |
Posted - Oct 31 2006 : 04:46:47 AM
|
If someone is interested i can also provide a zip file with the complete project. I just could not attach it to my prior post ... |
|
|
feline
Whole Tomato Software
United Kingdom
19020 Posts |
Posted - Oct 31 2006 : 10:33:29 AM
|
Thank you for the clear example, I get the same problem here. Unfortunately this is a known bug.
case=971
VA does not understand the "using namespace" line properly. If you wrap the function implementation in the namespace, or place altg:: in front of the class name then alt-g will work correctly.
Do all of your problem classes uses this namespace method? If so then it would explain things. If not then you could be running into more than one bug. |
zen is the art of being at one with the two'ness |
|
|
kai
Junior Member
11 Posts |
Posted - Oct 31 2006 : 12:01:08 PM
|
Thanks feline, i think this could explain most (if not all) of the problems. The 'using namespace xxx;' gets used a lot in our project. Any chance that this gets fixed in one of the next releases? |
|
|
feline
Whole Tomato Software
United Kingdom
19020 Posts |
Posted - Oct 31 2006 : 12:06:23 PM
|
This is flagged as a fairly urgent bug, but unfortunately I have no idea when it will be done. I suspect it could be a slightly tricky fix. |
zen is the art of being at one with the two'ness |
|
|
mertkew
New Member
Germany
8 Posts |
Posted - Dec 18 2006 : 08:27:13 AM
|
How is your progress on this issue? Almost all my .cpp files have the 'using namespace xxx' directive and it's quite annyoing "Goto Implementation" doesn't work with them. |
|
|
feline
Whole Tomato Software
United Kingdom
19020 Posts |
Posted - Dec 18 2006 : 12:10:06 PM
|
This has been fixed in the next build, which I am hoping will be posted in the next few days. |
zen is the art of being at one with the two'ness |
Edited by - feline on Dec 18 2006 2:36:15 PM |
|
|
sean
Whole Tomato Software
USA
2817 Posts |
Posted - Dec 19 2006 : 9:30:16 PM
|
case=971 is fixed in build 1543 |
|
|
|
Topic |
|