通过typedef定义多个间接定义导致无法完成

时间:2014-11-18 17:57:39

标签: emacs intellisense cedet

假装我打开了一个emacs窗口,它被水平拆分为三个缓冲区:

===== BUFFER1.cpp ======
#include "CommonTypeDefs.h"
namespace NS1 {
...
void someFunction( void ) {
  MyClassHandle mh = getMyClassHandle(); // getMyClassHandle(): returns a MyClassHandle
  mh-> // SEMANTIC does not parse
...

-

===== CommonTypeDefs.h   ======

...
typedef class NS2::MyClass* MyClassHandle
...

-

===== BUFFER2.h   ======

namespace NS2 {
...
class MyClass {
  // things in here
...

-

我不明白为什么这个额外的图层(在这种情况下是一个充满typedef的公共头文件)没有获得可能的完成。

-

我还注意到,当语义工作时,我会看到类定义的行,例如:

-

===== BUFFER1.h   ======

SomeDe[]finedClass* sdc = getSomeDefinedClassPtr();

-

如果我将光标放在sdc类型上(参见方括号),Emacs迷你缓冲区会说些什么

喜欢:

-

SomeDefinedClass.h: class SomeDefinedClass {}

-

这意味着我知道Semantic将能够解析SomeDefinedClass中的符号。发生这种情况时一切都很好,因为没有涉及typedef。但是,在事情不起作用的情况下:

-

===== BUFFER1.h   ======

SomeDe[]finedClassHandle sdch = getSomeDefinedClassHandle();

-

同样,我有方括号的光标,但这次迷你缓冲区说:

-

CommonTypeDefs.h: typedef* SomeDefinedClassHandle {}

-

我想这是有道理的,因为首先这个类型是一个typedef,但似乎语义停在那里 - 而不是说,好吧:我是一个typedef,但现在我需要查看typedef的符号。因此,我没有完成。

-

我已经确认已解析所有内容,因为我已启用 -decoration-mode 。此外,语义对其他事物起作用,它似乎无法处理这些句柄。

由于没有编译错误,因此缺少包含没有问题。在这个项目中有许多子系统,因此我将不同的目录包含在system-c-dependency-include *路径中,这些都可以正常工作。

为什么这不起作用?

Emacs 24.3 / Windows / CEDET(2014年9月26日bzr发布)

0 个答案:

没有答案