2012-01-26 5 views
3

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

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 частично работает, но не для этих файлов.

+0

Я использую VS 2008, и это может быть разницей, но для меня база данных Intellisense хранится в файле NCB. Удаление, которое обычно исправляет мои проблемы с Intellisense. – Travesty3

+0

Они изменили всю систему на VS2010, теперь она зависит от предварительно скомпилированных заголовков и использует базу данных mssql для хранения записей. Обычно папка ipch занимает более 100 МБ, а теперь ее почти пустая. –

+1

можно связать http://social.msdn.microsoft.com/Forums/en-SG/vsdebug/thread/d41f9aea-4425-48fd-9e3b-4169ffc38e6f – Ha11owed

ответ

4

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

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

Лучшая информация о том, как работает Intellisense и как ее устранить, исходит от Visual C++ Team Blog.

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

+0

Мой проект не использует pch, но intellisense использует его. Он создает папку для нее, но ее полностью пуст. –

+0

Может быть, у меня есть рекурсивный include. Это стоит расследование. Pragmas защищает, чтобы получить ошибку компиляции, но, вероятно, intellisense игнорирует их. –

+0

Есть ли способ получить больше информации о регистрации в intellisense? Как и список файлов, которые он пытался проанализировать. –

0

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

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

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

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

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

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

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

+0

Он создает ту же ошибку на двух разных компьютерах, которые синхронизируются с svn. Все остальные проекты работают очень хорошо. Я предполагаю, что ваш подход к грубой силе займет некоторое время (278 файлов с более чем 40 тыс. Строк кода). По крайней мере, я знаю, что проблема возникла после нескольких последних файлов. Возможно стоит попробовать. –

+0

@Cem: Любое обновление? – demoncodemonkey

+0

Теперь я изучаю другой вариант. У меня есть Visual AssistX. Я отключил intellisense. В настоящее время это кажется ОК. Я могу купить его, как только я уверен, что он работает на 100%. –

3

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

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

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

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

Смежные вопросы