Перейти к ошибкам определения - Visual Studio 2008 - PullRequest
8 голосов
/ 08 февраля 2011

Я пишу приложение C ++ в Visual Studio 2008. У него много определенных структур в нескольких заголовочных файлах, таких как:

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

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

#pragma pack( pop )                     // end 1-byte boundary alignment

В исходном файле эти определенные структуры используются какнапример:

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

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

    /* and so forth and so on... */
}

Даже если он успешно компилируется с 0 ошибками и 0 предупреждениями, иногда, когда я щелкаю правой кнопкой мыши по пользовательскому типу данных (например, в MyFunc), он выдает мне ошибку:

Символ 'myStruct_t' не определен.

Затем я нажимаю OK, чтобы закрыть диалоговое окно, и нажимаю Ctrl + Alt + F7 , чтобы перестроить решение.Он собирается без каких-либо ошибок или предупреждений, поэтому я знаю, что он находит определение myStruct_t при компиляции, но не может найти его, когда я пытаюсь использовать функцию Перейти к определению .Единственное, что приходит мне в голову, это то, что в этом приложении много определенных структур, выровненных по одному байту, но это не должно иметь значения.Кто-нибудь знает, как это исправить?

Ответы [ 2 ]

10 голосов
/ 08 февраля 2011

Попробуйте закрыть решение и затем удалить файл * .sdf.Когда вы снова откроете свое решение, Intellisense будет вынужден перестроить свою базу данных, и это может решить вашу проблему.

Редактировать: Исправлена ​​ошибка, указанная

Редактировать 2: Для прежних версий, если вы используете VisualStudio 2008 или старше, вы должны удалить все * .ncb файлы.

1 голос
/ 28 сентября 2014
  1. Завершить визуальный процесс студии. (В Visual Studio 2005 может потребоваться удалить все файлы *.ncb, когда процесс Visual Studio завершен)
  2. Повторно открыть раствор и очистить раствор: Build -> Clean Solution.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...