Visual Studio 2010 C ++ Intellisense ошибка - PullRequest
3 голосов
/ 27 января 2012

Я получаю странную ошибку Intellisense в VS 2010. Я безуспешно искал в Интернете. Кажется, что никто не получил эту ошибку раньше.

IntelliSense: PCH warning: header stop needs to be at global scope. 
An intellisense PCH file was not generated.

После этого много других ошибок, так как он перестает индексировать. Это происходит с последними файлами, которые я добавил. У меня есть много файлов в моем проекте (278), и это происходит с последними 5-6 из них. Может быть, я сделал что-то, что не нравится, или, может быть, есть ограничение.

Поскольку я не смог найти эту ошибку даже в документации, я хотел бы узнать причину, а также возможное решение. Обратите внимание, что я попытался удалить папку ipch и файл sdf, чтобы они сгенерировали новую. Ошибка дается до последней строки файла. Мой код интенсивно использует шаблоны.

EDIT:
Я заметил, что моя папка ipch в основном пуста. Это, вероятно, означает, что генерация всего скомпилированного заголовка не удалась, скорее для этих файлов. Тем не менее, intellisense частично работает, но не для этих файлов.

Ответы [ 3 ]

5 голосов
/ 02 марта 2015

Эта ошибка генерируется, когда вы забыли ";" после объявления класса, например:

#ifndef _MYCLASS_H
class MyClass {
...
public:
...
}

#endif <--- VS2010 report here the error PCH: warning...

Если вы поставите «;» после закрытия "}" ошибка исчезнет. Я не говорю, что это единственная причина, я просто говорю, что я нашел эту ошибку с пропавшим без вести ";" в указанном месте.

4 голосов
/ 27 января 2012

PCH означает «предварительно скомпилированный заголовок» - вам нужно убедиться, что они настроены правильно.

Кажется, что в сообщении об ошибке говорится, что заголовок, настроенный как «стоп» для предварительно скомпилированных заголовков, включается во вложенном виде (т. Е. Некоторые другие заголовки включают его). По умолчанию решение будет использовать stdafx.h в качестве заголовка 'stop', и, как правило, stdafx.h будет первым заголовком, включенным в любой файл .cpp или .c. Не включайте stdafx.h в другие заголовки.

Лучшая информация о том, как работает Intellisense и как ее устранять, содержится в Блоге команд Visual C ++ .

Несколько статей, которые могут быть полезны:

0 голосов
/ 27 января 2012

Мое первоначальное ощущение, что это может быть проблема с кодировкой файлов, но в любом случае вот как я бы подошел, чтобы выяснить это ...

Создать новое решение, работает ли intellisense? Если нет, то переустановка VS может быть в порядке.

Если intellisense работает в другом решении, то есть 2 возможности: что-то в вашем решении странно, или что-то в иерархии папок странное (возможно, разрешения?)

Я бы удалил всю папку решения и получил последнюю информацию из системы контроля версий.

Если это все еще происходит после этого, и вы действительно хотите найти причину, тогда вы можете удалить загрузку файлов из проекта, посмотреть, работает ли теперь intellisense, удалить еще немного ... пока а) у вас не закончится файлы или б) вы найдете файл, который вызывает ошибку.

Если а), то создайте новое решение и добавьте в него свои файлы и проекты. Если это работает, то сравните ваши новые файлы решений / проектов со старыми, чтобы увидеть, что отличается.

Если b), добавьте файлы обратно и начните обрезку до тех пор, пока не найдете ошибочную строку.

...