On 07/15/2010 01:00 PM, Joe Rumsey wrote:
>
> On Thu, Jul 15, 2010 at 5:03 AM,
> <cedet-devel-request@...
> <mailto:cedet-devel-request@...>> wrote:
>
> I am working on a C++ project which has a way of defining method
> functions
> in certain classes using macros for the function declaration. CEDET
> seems
> unable to entirely figure out the class context inside the bodies of
> these
> functions. I have included a test case that reproduces the problem
> below,
> the actual usage is much more complex, and I wasn't sure it wasn't just
> having problems finding the proper symbol definitions until I wrote this
> self-contained test case. In the sample included, inside of
> HANDLER(Test),
> CEDET will not properly tag m_testVar as a member of MyClass, though
> it will
> figure out that OtherFunction() is a method of MyClass. I get the same
> result if HANDLER() is defined as void MyClass::x##Handler(), so it
> seems
> it's not (just) the double macro expansion causing trouble.
>
>
> I just tested this again with CEDET from CVS, and it works fine for
> both my test case and the real project I'm working with. So, problem
> solved, I'll happily use the CVS version! I had had the same problem
> previously with 1.0pre7 and emacs 23.1, but I hadn't thought to try it
> from CVS until now. Thanks for bringing us this package, keep up the
> good work!
I'm glad you found the fix in CVS. I wasn't looking forward to
debugging the C preprocessor in Semantic again. ;)
Eric
|