Je sais pas pourquoi, mais g++ n'accepte aucun include sans le ".h". C'est réellement embêtant car toutes les classes pour mon projet d'info font appel à iostream et non à iostream.h
(en plus, il trouve pas string.h)
Comment résoudre ce problème ?
(sous Debian Sarge)
Merci d'avance
# Re: Problème avec g++ !
Posté par Geo Vah . Évalué à 2.
#include
#include
#include
#include
int main(int argc,char **argv) {
printf(strdup(argv[0]));
std::cout << "perdu"<<std::endl;
return 0;
}
Compile et dis moi ce que tu en penses...
En fait, quand on passe en C++ les entetes standard de C passe de toto.h à ctoto mais je ne connais pas la limitation au quels entetes et le pourquoi de la chose
Si ca ne marche pas, as tu installé les fichiers de g++ ? sur mandrake je dois installé un package nommé gcc-cpp.
Voila....
[^] # Re: Problème avec g++ !
Posté par jm trivial (site web personnel) . Évalué à 2.
C'est dommage, pour une démo de include, il n'y a plus rien de visible.
Pourquoi les .h ont-ils disparu à la fin des include?
Pour faire simple, g++ utilise la nouvelle norme c++ qui nécessite d'utiliser les indicateurs de portée. Ainsi, auparavant, on utilisait cout sans se soucier d'où ça venait. Maintenant, on utilise std::cout pour préciser qu'on utilise la version de la librairie standard.
Si on veut toujours utiliser une librairie, on peut bien sûr le faire, mais par défaut, on doit toujours préciser l'origine d'une fonction que l'on utilise.
Les fichiers sans .h proposent donc cette nouvelle norme, que l'on doit respecter si l'on veut que notre code soit utilisable dans 10 ans...
[^] # Re: Problème avec g++ !
Posté par Geo Vah . Évalué à 2.
#include cstring
#include cstdlib
#include cstdio
#include iostream
oui, stdlib ne doit servir a rien mais c un exemple....
[^] # Re: Problème avec g++ !
Posté par ploum (site web personnel, Mastodon) . Évalué à 2.
Mes livres CC By-SA : https://ploum.net/livres.html
[^] # Re: Problème avec g++ !
Posté par jm trivial (site web personnel) . Évalué à 1.
[^] # Re: Problème avec g++ !
Posté par Yannick Beynet (site web personnel) . Évalué à -1.
faire using std::cout ;
[^] # Re: Problème avec g++ !
Posté par scylla . Évalué à -1.
[^] # Re: Problème avec g++ !
Posté par Larry Cow . Évalué à 2.
Alors d'accord, c'est généralement en essayant de se lier à du code fermé, dans lequel les devs ont fait les gorets, mais ça arrive (je l'ai vu personellement).
Alors il est vrai que faire des "using namespace std" dans les fichiers qui ont besoin limite la casse (puisque laisse les fichiers qui n'ont pas besoin de std:: tranquilles). Mais on en a vu tellement qui font carrément le "using namespace" dans un .hh inclus partout... "Parce que comme ça j'ai pas de problèmes de compilation". Autant enlever le -Wall alors, aussi.
La bonne habitude à prendre (enfin je cause mais j'ai aussi du mal à la prendre) c'est de n'importer que les symboles dont on a explicitement besoin. Ca évite d'avoir pas mal de merdes quand on se lie à du code "fermé" (et dans la pratique, ca arrive malheureusement souvent).
[^] # Re: Problème avec g++ !
Posté par jm trivial (site web personnel) . Évalué à -1.
[^] # Re: Problème avec g++ !
Posté par Yannick Beynet (site web personnel) . Évalué à -1.
et heureusement c'est le principe même du C++
[^] # Re: Problème avec g++ !
Posté par jm trivial (site web personnel) . Évalué à -1.
J'en ai donc conclut qu'il y avait un truc bizarre, du genre: les fonctions des librairies peuvent avoir les mêmes signatures que les fonctions du programme, mais elles ne sont pas prioritaires.
Je sait, c'est tordu comme raisonnement, mais 1 jour avant de rendre un projet, et après 8 jours de codage, on ne réfléchit plus trop...
Depuis, je ne m'était pas reposé la question...
C'est vrai que c'est stupide.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.