Espressif IDE > Compiler > stdlib.h

Persönliche Seite #7787715
Lesenswert?

Jan H. schrieb:

Der Compiler

Das ist nicht der Compiler, nur die IDE. Diese ist Eclipse-Basiert und leider ziemlich schlecht darin Header zu finden. Der Compiler findet die aber trotzdem. Kompiliere dein Projekt und es wird wahrscheinlich funktionieren, und ignoriere/schließe diesen "Problems" Tab, der ist für C/C++ nahezu nutzlos (anders als bei Java).

Persönliche Seite #7787950
Lesenswert?

Jan H. schrieb:

Ist es nicht eigentlich ein Standard Header, so wie stdint etc.?

Ja. Der Header ist als Teil des Compilers bereits auf deinem Computer. Der Compiler findet ihn und das funktioniert. Nur Eclipse findet ihn nicht. Du kannst versuchen Eclipse irgendwie dazu zu bringen ihn von deiner Festplatte zu finden. Aber du musst ihn nicht nochmal runterladen. Du kannst das "Problem" aber auch einfach ignorieren, denn es spielt keine Rolle.

Moderator Persönliche Seite #7790725
Lesenswert?

Vielleicht kann die Eclipse-IDE Includes nicht lokalisieren, wenn sie von einem Include includiert werden.

Eventuelle kann man dem Eclipse auf die Sprünge helfen, indem man vor dem

1
#include "soc/soc.h"

einfach

1
#include <stdlib.h>

einfügt. Schließlich hat's mit stdint.h ja auch geklappt. Da stdlib.h bestimmt auch einen Include-Guard implementert hat, sollte dieses zusätzliche Include jedenfalls nicht schaden.

#7790760
Lesenswert?

Frank M. schrieb:

Vielleicht kann die Eclipse-IDE Includes nicht lokalisieren, wenn sie von einem Include includiert werden.

Sie könnte es schon, wenn die alle include-Pfade des Compilers auch richtig erkennen würde. Das läuft automatisch, und klappt auch in den allermeisten Fällen, aber eben nicht immer. Man könnte das jetzt von Hand irgendwo in den Einstellungen fixen, einfacher ist es halt, die ganze Syntaxprüfung durch die IDE einfach abzuschalten.

Wobei die Frage, wo da das angemeckerte include tatsächlich steht, und was da genau steht, ja nicht beantwortet wurde.

Oliver

#7794555
Lesenswert?

Was ich mir noch vorstellen könnte, wenn der Ersteller der soc.h/soc.c in seinem Code irgendwo etwas aus der stdlib verwendet hat, diese jedoch nicht einbindet, dann musst du das machen.

Die stdlib.h wird benötigt, sobald unteranderem eins davon im Code verwendet wird:

Also mach es mal so wie Frank es schon sagte:

Frank M. schrieb:

Eventuelle kann man dem Eclipse auf die Sprünge helfen, indem man vor dem

1
#include "soc/soc.h"

einfach

1
#include <stdlib.h>

einfügt.

#7794766
Lesenswert?

Adam P. schrieb:

Was ich mir noch vorstellen könnte, wenn der Ersteller der soc.h/soc.c in seinem Code irgendwo etwas aus der stdlib verwendet hat, diese jedoch nicht einbindet, dann musst du das machen.

Ums nochmals zu wiederholen: Das Programm kompiliert fehlerfrei. Lediglich die Eclipse IDE hat Probleme mit den Pfaden, und wirft daher diesen unberechtigten Fehler.

Da fehlt und muß im Sourcecode gar nichts.

Oliver

#7800974
Lesenswert?

In Eclipse bzw dem PlugIn CDT ist dafür der Indexer zuständig. stdlib wird von der Compiler toolchain mitgeliefert und der Pfad wird über den Compiler abgerufen, da scheint etwas nicht zu passen. Hier ist das beschrieben und wie man eine Debugausgabe dafür aktivieren kann: https://www.eclipse.org/community/eclipse_newsletter/2013/october/article4.php

#7801335
Lesenswert?

Rolf M. schrieb:

Doch, es gibt auch andere IDEs.

Die dann andere Probleme haben ;)

Das Abschalten der Language Server kann man machen und auch das Anzeigen der Fehlermeldungen. Aber dann funktioniert "goto symbol definition" nicht mehr. Das ist manchmal ganz hilfreich. Auch werden bei "mouse hover" kein Kontext mehr angezeigt bei Symbolen, die in den Headerfiles liegen, die nicht gefunden werden, da der Server ja abgeschaltet ist oder eben der Pfad nicht richtig gefunden wurde.

Und es ist richtig, das hat nichts mit dem Compiler zu tun. Der benutzt seine eigene Includepfade (z.B mit -I myIncludePath). Bei dem Problem des TO geht es nur um die Pfade für Eclipse und den Editor.

J. S. schrieb:

In Eclipse bzw dem PlugIn CDT ist dafür der Indexer zuständig.

Genau :) Danke für den Link. Kannte ich auch nicht.

#7801361
Lesenswert?

900ss schrieb:

Rolf M. schrieb:

Doch, es gibt auch andere IDEs.

Die dann andere Probleme haben ;)

Das bestreite ich nicht. Es war ja nur gefragt, ob es eine andere IDE gibt.

Das Abschalten der Language Server kann man machen und auch das Anzeigen der Fehlermeldungen.

Kann man, will man aber nicht.

Und es ist richtig, das hat nichts mit dem Compiler zu tun. Der benutzt seine eigene Includepfade (z.B mit -I myIncludePath).

Ich weiß nicht, welchen Language Server Eclipse verwendet, aber mit clangd hat man am besten eine compile_commands.json, wo die Kommandozeile aller Compiler-Aufrufe des Projekts drin steht. cmake kann diese Datei z.B. automatisch generieren. Alternativ gibt es auch noch Konfigurationsdateien für allgemeine Optionen für das ganze Projekt und Umgebungsvariablen, aus denen er die Einstellungen lesen kann (*). Allerdings würde ich erwarten, dass man das auch direkt von der IDE aus konfigurieren kann.

(*) https://clangd.llvm.org/config#compileflags

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren