J'ai créé CDT pour Eclipse et écrit un programme simple Hello World:
#include <stdio.h>
int main(void){
puts("Hello, world.");
return 0;
}
Le programme se construit et s’exécute correctement, mais Eclipse continue d’afficher ce point d’interrogation jaune à côté de la déclaration d’inclusion mentionnant "Unresolved inclusion: <stdio.h>"
lorsque je la place au-dessus de la souris.
Cela n’affecte pas le fonctionnement du programme mais je le trouve plutôt ennuyeux.
Est-ce que quelqu'un a une idée de comment l'enlever?
Le compilateur utilisé par Eclipse est capable de résoudre les symboles correctement, de sorte que le code se compile correctement.
Mais le pré-processeur/achèvement de code utilisé par Eclipse ne sait pas où existe stdio.h.
Vous devez spécifier le chemin du système de fichiers où se trouve stdio.h.
Voir: http://help.Eclipse.org/galileo/index.jsp?topic=/org.Eclipse.cdt.doc.user/tasks/cdt_t_proj_paths.htm
J'ai trouvé ces réponses (y compris celle acceptée) un peu cryptiques.
Pour moi, je devais ajouter le chemin où se trouve stdio.h (comme @ardnew l'a dit). Dans Eclipse, vous ouvrez les propriétés de votre projet, développez "Général C/C++" et sélectionnez "Chemins et symboles".
Assurez-vous d'avoir ajouté le répertoire include
pour chaque langue que vous utilisez. (Dans mon cas, je devais simplement l'ajouter à GNU C++.)
en ajoutant simplement à la base de connaissances, je viens de faire ceci sur Win7 avec Cygwin.
c'est ce qui semble fonctionner pour moi.
inclure les chemins pour c:
D:\dev\cygwin\lib\gcc\i686-pc-cygwin\3.4.4\include
D:\dev\cygwin\usr\include
inclure des chemins pour c ++:
D:\dev\cygwin\lib\gcc\i686-pc-cygwin\3.4.4\include
D:\dev\cygwin\lib\gcc\i686-pc-cygwin\3.4.4\include\c++
D:\dev\cygwin\usr\include
cela me donne une compilation propre de bonjour le monde.
Sélectionnez Projet> Propriétés> Général C/C++> Le préprocesseur inclut> Fournisseurs Et sélectionnez "Paramètres du compilateur intégré CDT GCC" et "Paramètres du compilateur intégré CDT CROSS GCC".
Cela peut résoudre le problème. (Excusez-moi pour le mauvais anglais)
Je travaille avec plusieurs configurations de compilateur croisé, où je dois utiliser différents emplacements pour les fichiers d'en-tête STD (et d'autres variables d'environnement).
La solution consistait à configurer l'indexeur afin qu'il utilise la configuration active.
Malheureusement, à cause d’un bogue dans Eclipse, l’option n’est pas stockée localement. Vous devez donc utiliser la configuration workspace si vous souhaitez enregistrer la configuration à l’ouverture d’Eclipse encore.
Fenêtre -> Préférences -> C/C++ -> Indexeur -> Utiliser la configuration de construction active
Cela obligera Eclipse à utiliser le compilateur approprié, défini avec la configuration Cross GCC active du projet.
J'utilise Eclipse avec Cygwin et cela a fonctionné pour moi:
Sélectionnez Projet> Propriétés> C/C++ Général> Le préprocesseur inclut ...> Fournisseurs Et sélectionnez "Paramètres du compilateur intégré CDT GCC Cygwin [Partagé]".
J'utilise CodeWarrior IDE basé sur Eclipse pour les projets intégrés et je viens de résoudre ce problème en supprimant et en rajoutant les adresses source dans Project Properities-> C/C++ General-> Path et Sybols-> Include Directories. Cela signifie qu'il existe de nombreuses raisons de prendre le message "Inclusion non résolue:" et qu'il existe également de nombreuses solutions.
Dans ADT j'ai fait ce qui suit:
Normalement, Eclipse devrait pouvoir résoudre automatiquement les fichiers d'inclusion standard. Pour ce faire, il appelle gcc et demande sa configuration. Eclipse ne trouve probablement pas votre gcc (ou du moins pas la version que vous utilisez pour la compilation).
Au lieu de spécifier tous les chemins d'inclusion standard dans les paramètres du projet, vous voulez probablement vous assurer qu'Eclipse trouve gcc. Ajoutez le répertoire où se trouve gcc à la variable d’environnement PATH avant de démarrer Eclipse.
Si vous souhaitez que différents projets utilisent différents compilateurs, vous pouvez ajuster les options de découverte. Celles-ci sont masquées par défaut. Activez-les d'abord dans Fenêtre> Préférences> C/C++> Paramètres des pages de propriétés> Afficher la page "Options de découverte". Ensuite, vous pouvez les trouver sous C/C++ Construire> Options de découverte dans les propriétés du projet.
Comme le notent les réponses actuelles (en haut), il est nécessaire de spécifier l'emplacement des dossiers de construction, qui peuvent être ajoutés via une boîte de dialogue accessible en cliquant avec le bouton droit sur le projet et en sélectionnant Propriétés-> C/C++ Général-> Chemins et symboles.
La question restante est de savoir quels chemins doivent être ajoutés.
Si vous faites de la compilation croisée ou faites quelque chose d'extraordinaire, vous savez probablement quels chemins vous avez besoin et dans quel ordre (ou devriez consulter la documentation de votre compilateur et/ou d'autres dépendances).
Pour ceux qui recherchent les bases: si vous avez correctement configuré gcc pour un accès en ligne de commande et avez besoin de connaître les chemins d’inclusion par défaut qu’il utilise, il suffit de le lui demander.
Selon la langue qui vous intéresse, utilisez:
gcc -x c -v -E /dev/null
gcc -x c++ -v -E /dev/null
... ceci listera les paramètres par défaut du compilateur utilisés lors de l'appel de gcc (et cette commande fonctionne également si "gcc" est vraiment un alias pour clang, comme sur OSX).
Sous Windows, notez que /dev/null
n'est qu'un raccourci facile pour un fichier d'entrée vide (sans avoir à en créer un).
Vers le bas se trouvera la liste des répertoires include:
#include "..." search starts here:
#include <...> search starts here:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/7.0.2/include
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/include
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks (framework directory)
End of search list.
Si vous entrez les répertoires énumérés ici, dans l'ordre indiqué, dans la boîte de dialogue des chemins et des symboles d'Eclipse, Eclipse CDT devrait pouvoir rechercher les en-têtes standard, et éventuellement d'autres en-têtes spécifiques à votre système d'exploitation.
(Merci à réponse de devnull à une question connexe.)