web-dev-qa-db-fra.com

Eclipse CDT "Le symbole NULL n'a pas pu être résolu"

Je viens d'installer EclipseCDT avec MinGW. Toutes les variables d'environnement sont définies, inclut, etc.

J'ai essayé de charger un projet C que j'avais auparavant sur mon ordinateur, il semble que tout se passe bien, mais l'erreur suivante s'affiche avec le symbole NULL:

Symbol 'NULL' could not be resolved

Des idées? Merci!

25
Alex

NULL est généralement défini dans stddef.h. Ce fichier est également généralement inclus avec stdlib.h et stdio.h.

Et, vous pouvez toujours faire ça: 

#ifndef NULL
#define NULL   ((void *) 0)
#endif
35
Man Vs Code

Comme Bob l'a mentionné, je corrige le bogue simplement en reconstruisant l'index

  1. droit votre projet
  2. choisissez "Index"
  3. choisissez "Rebuild"
16
David

J'avais le même problème: mon fichier make fonctionnait bien, mais des erreurs comme la vôtre se produisaient dans la vue Eclipse CDT. 

J'ai fermé le projet en cours, j'ai ouvert un nouveau "Projet Makefile avec le code existant", en spécifiant le bon emplacement source de mon projet. Après cela, j'ai vérifié que: Clic droit projet/C++ général/Chemins et symboles/Gnu C++/les répertoires include ne sont pas vides et incluent les chemins corrects de mon projet.

Ensuite, j'ai reconstruit l'index (clic droit/index/reconstruit).

De plus, j'utilise Eclipse CDT 7 et non pas Eclipse CDT 8 car CDT8 me donne parfois des erreurs de compilation à partir de l'interface graphique que je ne pouvais pas résoudre, même si le fichier makefile était correct.

5
Bob Yoplait
  • la raison est:

NULL défini dans stddef.h, mais stddef.h est dans xxx/include/linux et non pas xxx/include

-> bien que vous ayez ajouté le xxx/include de MingW, vous ne pouvez toujours pas trouver NULL

  • la solution est:

ajoutez le chemin include/linux de votre MingW à votre projet 

  • référant

(1) Un exemple du chemin d'accès include/linux de mon compilateur croisé xscale est: /opt/crosscompile/xscale/gcc-4.6.0-glibc-2.9/arm-xscale-linux-gnueabi/sysroot/usr/include/linux

added GNU C++ include linux path

(2) mon message: Ubuntu Eclipse: le symbole «NULL» n’a pas pu être résolu

2
crifan

Je viens de corriger une erreur comme celle-ci et je pensais que personne ne l'avait trouvée, je la posterais. J'ai trouvé que la bibliothèque standard avait déclaré NULL comme étant ___need_NULL dans mon compilateur AVR GCC. Cela a provoqué une erreur dans Eclipse IDE. L’erreur a cependant été causée par l’analyse de Coden, qui n’a pas trouvé l’anomalie et qui a été si complexe que le symbole n’a pu être retrouvé. Vous pouvez désactiver Coden dans Préférences sous "Général -> Démarrage/Arrêt" ou modifier son comportement dans l'analyse de code C/C++.

Cela peut expliquer la nature parfois aléatoire des autres 

1
richendes

Je pense que vous n'avez pas ajouté de fichier d'en-tête qui définitNULL. Ajoutez stdlib.h (instruction #include). il définit les macros NULL.

1
BrettWatts

Je rencontre également un problème similaire: "La magie du symbole elfe n'a pas pu être résolue" et l'en-tête de l'elfe a déjà été incluse. Je pense que le problème peut être causé par le cache de la bibliothèque car le redémarrage du logiciel peut résoudre le problème. Merci pour l'aide des autres. 

0
user6528152

Je cherchais des réponses à ce sujet parce que j’ai découvert que CDT ne résout parfois pas les en-têtes de la bibliothèque standard. Je ne sais toujours pas pourquoi et comment reproduire le bogue. Il suffit de redémarrer CDT et tout est résolu.

0
Adrián Pérez

J'avais la même erreur et je l'ai corrigée en faisant un clic droit sur votre projet, survolez l'onglet Index et cliquez sur Reconstruire Mes erreurs ont disparu après cela.

0
Cwells

aucune des suggestions ci-dessus ne m'a aidé… .. À chaque ouverture d'un fichier, l'exclipse rapporte des dizaines d'erreurs.

Ce qui a finalement aidé: Fermer tous les fichiers, puis supprimer les bogues manuellement (clic droit sur la liste des erreurs dans la fenêtre Problèmes), puis créer un index de reconstruction.

0
humfry

Ajoutez simplement C:\MinWG\lib aux chemins de la bibliothèque Eclipse.

0
Tom Brito