2011-09-15 2 views
24

Ho appena installato EclipseCDT con MinGW. Tutte le variabili di ambiente sono impostate, incluse, ecc. Provato a correre in un mondo ciao e tutto sembra andare bene.Eclipse CDT "Impossibile risolvere il simbolo NULL"

Ho provato il caricamento di un progetto C che avevo prima nel mio computer, sembra di caricare tutto bene, ma ottengo il seguente errore con il simbolo NULL:

Symbol 'NULL' could not be resolved 

Eventuali approfondimenti? Grazie!

risposta

31

NULL viene in genere definito in stddef.h. Questo file è anche in genere incluso con stdlib.h e stdio.h.

E, si può sempre fare questo:

#ifndef NULL 
#define NULL ((void *) 0) 
#endif 
+0

In realtà non penso che le intestazioni standard si includano; ognuno dei vari header che definisce 'NULL' lo fa in modo indipendente. E tu * potresti * definirlo da solo, ma non ci sono buone ragioni per farlo; basta includere l'intestazione. –

+1

@Keith - Forse su alcuni sistemi, ma su Linux, stdlib.h include stddef.h. Ed ecco un esempio su Google Code Search - [http://google.com/codesearch#XAzRy8oK4zA/libc/include/stdlib.h&q=stdlib.h&type=cs] –

+0

Ok, ma l'effetto è come se non includesse esso. Questo: '#include int main (void) { offsetof (struct {int i;}, i); return 0; } ' non riesce a compilare. –

0

ero alla ricerca di risposte qui su questo, perché ho scoperto che a volte non riesce CDT risolvere le intestazioni della libreria standard. Non so ancora perché e come riprodurre il bug. Basta riavviare CDT e tutto è risolto.

5

Ho avuto lo stesso problema: il mio makefile funzionava bene ma ricevevo errori come il tuo dalla vista CDT di Eclipse.

Ho chiuso il progetto corrente, ho aperto un nuovo "Progetto Makefile con codice esistente", specificando la posizione di origine corretta del mio progetto. Dopo questo, ho controllato che: progetto con clic destro/C++ generale/Percorsi e simboli/Gnu C++/include le directory non è vuoto e include i percorsi corretti del mio progetto.

Quindi, ho ricostruito l'indice (clic destro/indice/ricostruzione).

Inoltre, utilizzo Eclipse CDT 7 e non Eclipse CDT 8 perché a volte il CDT8 mi fornisce errori di compilazione dalla GUI che non sono stato in grado di risolvere, anche se il makefile andava bene.

+0

+1 State cercando questa soluzione da un po 'di tempo. – chux

14

Come detto Bob, posso correggere il bug semplicemente ricostruito l'indice

  1. giusto il vostro progetto
  2. scegliere "Index"
  3. scegliere "Ricostruire"
0

stavo avendo il stesso errore e l'ho risolto facendo clic con il pulsante destro del mouse sul progetto, passando con il mouse sulla scheda indice e facendo clic su Ricostruisci. I miei errori sono andati via dopo.

2
  • ragione è:

NULL definito in stddef.h, ma stddef.h è in xxx/include/linux non xxx/include

-> anche se è stato aggiunto del MingW xxx/include, ancora non riesce a trovare NULL

  • la soluzione è:

aggiungere il include/linux percorso del MingW al progetto

  • referer

(1) esempio di include/linux percorso mia XScale di cross-compilazione è: /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) il mio post: Ubuntu Eclipse: Symbol ‘NULL’ could not be resolved

1

Ho appena corretto un errore come questo e ho pensato che nessun altro aveva trovato questa soluzione l'avrei postata. Ho trovato che lo stdlib aveva dichiarato NULL come ___need_NULL nel mio compilatore GCC AVR. Ciò ha causato un errore nell'IDE di Eclipse. L'errore è stato tuttavia causato dall'analisi del coden che non ha trovato l'anomalia e quindi le ali che il simbolo non è stato trovato. Puoi disattivare il Coden in Preferenze in "Generale -> Avvio/Arresto" o modificarne il comportamento nell'analisi del codice C/C++.

Questo potrebbe spiegare la natura a volte casuale gli altri stanno vivendo

1

Penso che non hai aggiunto file di intestazione che definisce NULL. Aggiungi stdlib.h (#include statement). definisce macro NULL.

0

Basta aggiungere C:\MinWG\lib ai percorsi della libreria di Eclipse.

0

Ho anche riscontrato un problema simile che è "Impossibile risolvere la magia elfo simbolo" e l'intestazione elfo è già stata inclusa. Penso che il problema potrebbe essere causato dalla cache della libreria, poiché il riavvio del software può risolvere il problema. Grazie per l'aiuto degli altri.

+0

Hai riscontrato un problema simile? – Alex

+0

sì, il mio problema è "simbolo" elf magic "non può essere risolto" – user6528152

+0

Benvenuti in SO. Alcuni suggerimenti su come pubblicare risposte. Pubblica una risposta se: 1.hai riscontrato un problema simile ed è stato in grado di risolverlo. 2. Pensi che la tua risposta possa contribuire (ad esempio, la tua soluzione è diversa o il problema è leggermente diverso ma correlato all'originale). Includi più dettagli nella risposta. – Alex