10
votes

C ++ Eclipse Mauvaise interprétation d'erreur

J'ai un problème avec Eclipse C ++. Mon projet compile et fonctionne, mais Eclipse (Juno) continue de dire qu'il y a des milliers d'erreurs. Par exemple, il existe une fonction SetRun dans mon code et Eclipse mentionne cette erreur: les candidats «appelés arguments invalides» sont les suivants: Void SetRun (?) '», ATTENDU QUE SETRUN est de type statique statique SETRUN (UINT32_T RUN);

J'ai beaucoup d'erreurs similaires comme celle-là, où Eclipse ne semble pas comprendre le type de fonction et met un "?" à la place.

J'ai aussi beaucoup d'erreurs comme ceci: "Symbole '*" n'a pas pu être résolu. "

Je pense que cela fait partie du même problème.

Que puis-je faire pour faire arrêter Eclipse m'arrêter de me dire ces erreurs?


1 commentaires

Problème commun et gênant. C'est bien de l'avoir résolu sur le poêle.


5 Réponses :


3
votes

En réalité, Eclipse est une sorte de projet instable. Essayez de nettoyer et de rafraîchir le projet.


7 commentaires

J'ai essayé de nettoyer et de rafraîchir le projet, mais les erreurs toujours là. J'ai aussi redémarré Eclipse. Je préfère rester avec éclipse, autant que possible.


Je ne pense pas que je ne sais pas ce que cela signifie :). Comment tu fais ça ?


Index - c'est une cache de toute votre structure de code de projet. Eclipse le construit pour rechercher plus rapidement et montrer des suggestions sur votre pièce de code tapée.


Appuyez sur le bouton droit de la souris sur un projet, choisissez "Index" -> "Rebuild"


Non, je n'avais pas essayé alors. Merci pour l'explication. Je l'ai fait juste maintenant, mais malheureusement, cela montre toujours des erreurs. Oh, attendez en fait que cela pensait, ils ont tous disparu! Merci beaucoup !!


Oui, après avoir lancé le processus de reconstruction, vous devez attendre que le travail soit effectué. Vous pouvez voir les progrès dans le conner de bas de droite sur l'interface Eclipse.


Ce n'est pas instable, il est difficile de régler. C'est un plaisir d'utiliser, mais vous devez avoir beaucoup de choses auparavant.



5
votes

J'ai essayé la solution proposée et cela n'a pas fonctionné pour moi. Ce qui a aidé, c'était d'éteindre la cycle de codification du projet. Je suis allé à Properties-> C / C ++ General-> Analyse de code. Utilisez des paramètres de projet sélectionnés et désactivé toutes les erreurs. Ceci est bien sûr très ennuyeux et malheureux et je serais heureux de savoir quand il est correctement fixé. C'est une honte que nous ne puissions pas utiliser la fonctionnalité d'autre IDE décent.


0 commentaires

1
votes

J'avais beaucoup de ces erreurs quant à essayer d'obtenir Codan de fonctionner sur un code qui était destiné à un Mac. Mes bibliothèques Mac SDK ont été incluses via Symlinks comme dans Cette question (Mais pas tous - restez à l'écoute!) À la fin, il s'est avéré que je n'avais pas tous les en-têtes inclus. Par exemple, j'ai eu l'appel de la fonction suivant: xxx

qui donnait l'erreur: xxx

maintenant, la signature correcte de la fonction , défini dans iokit / iokitlib.h (ce que j'ai fait) est: xxx

maintenant, si nous prenons le premier argument et tracez le type Définitions, nous obtenons: xxx

et ensuite! Je n'ai pas eu l'inclusion qui définit __ darwin_natural_t . Ceci inclut était en fait dans i386 , que je n'avais pas dans mon répertoire symbolique. L'ajout de celui-ci terminé la chaîne: xxx

Enfin, CODAN savait quel type argument 1 de iOREGRYENTRYGETPARENTRY () était censé être, et l'erreur a changé pour : xxx

J'ai répété cette "trace de type" pour les autres arguments et a constaté que l'erreur a disparu (je n'avais même pas besoin de reconstruire l'index, mais ymmv) . Bien sûr, vous auriez besoin de trouver les en-têtes dont vous avez besoin et peut sûrement ils sont inclus - ce qui précède n'est qu'un exemple!


0 commentaires

1
votes

J'ai eu le même problème avec quelques fonctions aussi. Il s'est avéré que l'argument était, après plusieurs Typefs, un __int64, qui n'est pas défini (non standard). Je n'avais que de le définir dans mon projet et cela a résolu le problème.

Projet-> Propriétés-> C / C ++ General-> Chemins et symboles-> Symboles-> Fichier source C ++-> Ajouter

Nom: __int64

valeur: longue long

(ou au lieu de "long" longtemps "peut-être que vous pourriez peut-être utiliser l'une des valeurs de cette réponse )

EDIT:

Au fait, j'ai vu un rapport de bogue sur ce problème même dans l'éclipse Bugzilla, alors peut-être définir __int64 ne sera pas nécessaire à l'avenir


0 commentaires

2
votes

en Eclipse:

  • Cliquez avec le bouton droit de la souris sur le projet,
  • Cliquez sur Propriétés
  • Développez "C / C ++ Général" l'élément de la vue d'arborescence à gauche en cliquant sur l'arreur, (cliquez simplement sur l'élément lui-même n'élargne pas les sous-options)
  • à partir des sous-options Sélectionnez "Le prétraiteur incluent des chemins, des macros, etc."
  • Cliquez sur l'onglet "Fournisseurs" et cochez la case en regard de "CDT GCC Compiler Paramètres [partagés]" . . .

0 commentaires