2012-01-26 8 views
3

Je reçois une erreur Intellisense étrange dans VS 2010. J'ai cherché sur Internet sans succès. Il semble que personne d'autre n'ait eu cette erreur auparavant.Visual Studio 2010 erreur C++ Intellisense

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

Suite à ces nombreuses autres erreurs car elle arrête l'indexation. Cela arrive aux fichiers récents que j'ai ajoutés. J'ai beaucoup de dossiers dans mon projet (278) et ceci arrive aux 5-6 plus récents d'entre eux. Peut-être que j'ai fait quelque chose qu'il n'aime pas ou peut-être qu'il y a une limitation.

Puisque je n'ai pas pu trouver cette erreur même dans la documentation, je voudrais apprendre la raison ainsi qu'une solution possible. Notez que, j'ai essayé de supprimer le dossier d'ipch et le dossier de pdf pour les obtenir a produit un nouveau. L'erreur est donnée à la dernière ligne d'un fichier. Mon code utilise beaucoup de modèles. J'ai remarqué que mon dossier ipch est pour la plupart vide.

EDIT:
Cela signifie probablement que toute la génération de l'en-tête précompilé échoue, plutôt pour ces fichiers. Pourtant, intellisense fonctionne partiellement, mais pas pour ces fichiers.

+0

J'utilise VS 2008, et cela pourrait faire la différence, mais pour moi, la base de données Intellisense est stockée dans un fichier NCB. Supprimer cela règle généralement mes problèmes Intellisense. – Travesty3

+0

Ils ont changé le système entier avec VS2010 maintenant, il dépend des en-têtes précompilés et utilise la base de données mssql pour stocker les entrées. Normalement, le dossier ipch prend plus de 100mb et maintenant c'est presque vide. –

+1

peut être liée http://social.msdn.microsoft.com/Forums/en-SG/vsdebug/thread/d41f9aea-4425-48fd-9e3b-4169ffc38e6f – Ha11owed

Répondre

4

PCH signifie «en-tête pré-compilé» - vous devez vous assurer que vous avez correctement configuré ceux-ci. Le message d'erreur semble indiquer que l'en-tête configuré comme 'stop' pour les en-têtes précompilés est inclus de manière imbriquée (c'est-à-dire qu'un autre en-tête l'inclut). Par défaut, une solution utilisera stdafx.h comme en-tête 'stop' et l'idiome est que stdafx.h sera le premier en-tête inclus dans n'importe quel fichier .cpp ou .c. N'incluez pas stdafx.h dans un autre en-tête.

Les meilleures informations sur le fonctionnement d'Intellisense et la manière de le résoudre proviennent du Visual C++ Team Blog.

Quelques articles qui pourraient être utiles:

+0

Mon projet n'utilise pas pch mais intellisense l'utilise. Il crée le dossier mais il est totalement vide. –

+0

Peut-être que j'ai un récursif inclus. Cela mérite d'être étudié. Les Pragmas protègent pour obtenir une erreur de compilation mais l'intellisense les ignore probablement. –

+0

Existe-t-il un moyen d'avoir plus d'informations de connexion à propos d'intellisense? Comme la liste des fichiers, il a essayé d'analyser. –

0

Mon premier sentiment est que cela pourrait être un problème d'encodage de fichiers, mais de toute façon voici comment j'approcherais pour le comprendre ...

Créer une toute nouvelle solution, l'intellisense fonctionne-t-elle? Si ce n'est pas le cas, une réinstallation VS peut être en ordre.

Si IntelliSense fonctionne dans une solution différente, alors il y a 2 possibilités: (autorisations peut-être) quelque chose dans votre solution est timbré, ou quelque chose dans votre hiérarchie de dossiers est screwy

je aimerais supprimer l'intégralité du dossier de solution et obtenir la dernière version du contrôle de la source. Si cela se produit encore après cela et que vous voulez vraiment trouver la cause, alors vous pouvez supprimer une charge de fichiers du projet, voir si l'intellisense fonctionne maintenant, retirer un peu plus ... jusqu'à ce que a) vous épuisiez de fichiers ou b) vous trouvez le fichier qui provoque l'erreur.

Si a) alors faites une toute nouvelle solution et ajoutez-y vos fichiers et vos projets.Si cela fonctionne, comparez vos nouveaux fichiers de solution/projet avec les anciens pour voir ce qui est différent. Si b) puis rajoutez les fichiers et commencez l'élagage jusqu'à ce que vous trouviez la ligne fautive.

+0

Il crée la même erreur dans deux ordinateurs différents qui sont synchronisés avec svn. Tous les autres projets fonctionnent plutôt bien. Je suppose que votre approche de force brute prendra du temps (278 fichiers avec plus de 40k lignes de code). Au moins je sais que le problème est arrivé après les derniers fichiers. Ça vaut le coup d'essayer. –

+0

@Cem: Toute mise à jour? – demoncodemonkey

+0

Je suis en train d'explorer une autre option. J'ai installer Visual AssistX. J'ai désactivé l'intellisense. Actuellement, cela semble correct. Je pourrais l'acheter dès que je suis sûr que cela fonctionne à 100%. –

3

Cette erreur est générée lorsque vous oubliez un ";" après une déclaration de classe, par exemple:

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

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

Si vous mettez un ";" après la fermeture "}", l'erreur disparaît. Je ne dis pas que c'est la seule cause, je dis juste que j'ai trouvé cette erreur avec les disparus ";" à l'endroit mentionné.

Questions connexes