转到定义失败 - Visual Studio 2008

Jim*_*ell 8 c++ visual-studio-2008

我在Visual Studio 2008中编写了一个C++应用程序.它在几个头文件中有很多已定义的结构,例如:

#pragma pack( push , 1 )                // align on a 1-byte boundary

typedef struct myStruct_tag
{
    /* ... */
} myStruct_t;

#pragma pack( pop )                     // end 1-byte boundary alignment
Run Code Online (Sandbox Code Playgroud)

在源文件中,这些定义的结构如下使用:

void MyFunc( void )
{
    myStruct_t * myStruct = NULL;

    myStruct = (myStruct_t *)malloc( sizeof(myStruct_t) );

    /* and so forth and so on... */
}
Run Code Online (Sandbox Code Playgroud)

即使它成功编译0错误和0警告,有时当我右键单击自定义数据类型(如in MyFunc)时,它给我一个错误:

未定义符号'myStruct_t'.

然后单击"确定"关闭对话框并按Ctrl+ Alt+ F7重建解决方案.它构建时没有任何错误或警告,因此我知道它正在找到myStruct_t编译时的定义,但是当我尝试使用Go to Definition功能时它无法找到它.我唯一想到的是这个应用程序有很多定义的结构,单字节对齐,但这不应该有所作为.有人知道如何解决这个问题吗?

Pep*_*epe 10

尝试关闭解决方案,然后删除*.sdf文件.当您重新打开解决方案时,Intellisense将被迫重建其数据库,这可能会解决您的问题.

编辑:修正了错误指向

编辑2:对于旧版,如果您使用的是Visual Studio 2008或更早版本,则应删除所有*.ncb文件.