Salut,
Ca, ce n'est pas une classe! C'est une fonction! Et, qui plus est, la fonction principale : celle que le système d'exploitation appelle obligatoirement et automatiquement lorsqu'il essaye de lancer une application
Mais bon, ce n'est que pour ton information générale : il faut vraiment essayer de s'habituer dés le départ à utiliser les bons termes pour désigner les bonnes choses, autrement, les gens ne te comprendront pas (et cette remarque ne voulait qu'attirer ton attention sur ce point )
Il faut aussi savoir que nous apprécions généralement de connaître les messages d'erreurs émis lors de la compilation. Cela nous permet de nous faire une idée bien précise de ce qui se passe, au lieu d'avoir recours à la technique de la boule de crystale. Il faut dire que cette technique a parfois des ratés
Je vais donc te donner un deuxième conseil avant de te répondre : aide nous à t'aider. Donnes nous toutes les informations utiles dés le départ, cela nous permettra de cibler beaucoup mieux et beaucoup plus vite nos réponse : Les messages d'erreurs du compilateur sont d'une aide appréciable pour nous donner cette possibilité
Mais bon, comme je manquais d'informations, je me suis tourné vers ma boule de crystal, et tu as de la chance, elle a bien voulu fonctionner par intermittence . Je crois donc que le compilateur a du se plaindre du fait qu'il ne connaît pas cout ni endl.
Et c'est sans doute tout à fait normal. Car, à la base, le compilateur ne connait vraiment pas grand choses : à par les type char, short, int, long, long long, float, double et long double, et les versions "signed" et "unsigned des cinq premiers, il ne connait rien! Même pas le flux de sortie standard (et donc encore moins le manipulateur de flux endl), c'est te dire!
Pour qu'il connaisse le flux de sortie standard cout, il faut faire en sorte qu'il sache qu'il existe. Pour ce faire, il faut inclure le fichier d'en-tête <iostream>.
La première étape est donc de modifier ton code pour inclure ce fichier sous la forme de
1 2 3 4 5 6
| #include <iostream>
int main ()
{
cout<<"bonjour" endl << "au revoir" <<;
return0;
} |
Mais cela ne sera malheureusement pas suffisant. Parce que tout ce qui est fournit par le standard se trouve dans une espèce de "boite noire" (on parle en fait d'espace de noms ou de namespace en anglais) nommée std.
Pour pouvoir faire appel à cout, il faut donc dire que c'est le cout qui se trouve spécifiquement dans cette boite noire std, et non celui qui pourrait se trouver "ailleurs". Il en va d'ailleurs de même pour le manipulateur de flux endl
Pour ce faire, il faut faire précéder cout (et endl, et tout ce que tu voudras utiliser qui soit issu de la bibliothèque standard ) de std::. La deuxième étape consiste donc à faire ce genre de modification dans ton code, qui prendra du coup la forme de
1 2 3 4 5 6
| #include <iostream>
int main ()
{
std::cout<<"bonjour"<< std::endl << "au revoir" <<;
return0;
} |
Ah, au fait, ma boule de crystal s'est rallumée d'un seul coup, et elle a été beaucoup plus précise... (quand je te disais qu'elle ne veut bien fonctionner que de temps en temps )
Tu dois obligatoirement utiliser l'opérateur << entre chaque élément que tu essayes d'envoyer dans cout!
Il manque cet opérateur entre "bonjour" et "endl" dans ton code:
cout<<"bonjour" endl << "au revoir" <<;
deviens donc
cout<<"bonjour"<< endl << "au revoir" <<;
Du coup, il y a de fortes chances pour que le message ait été totalement différent de ce que je croyais au départ
Et, je m'en voudrais de terminer sans un dernier petit conseil : le code est beaucoup plus souvent lu et modifié qu'il n'est compilé. Tu dois donc veiller à le rendre le plus facile à lire pour les humains possible. Et je te compte parmi les lecteur potentiels
Tu devrais donc veiller à faire en sorte que les différents groupes d'instructions soient faciles à repérer. L'une des solutions pour arriver à ce résultat est de décider d'une politique d'indentation (de rajout d'espace pour distinguer un groupe d'instructions imbriqué dans un autre) stricte.
Par exemple, de rajouter trois (ou quatre, ou huit ou ... ) espace de plus à chaque fois que tu ouvre une accolade.
Ici, cela n'a pas énormément d'importance, mais tu verras rapidement que cela permet de faciliter énormément la relecture du code
Ainsi, au lieu d'avoir (code corrigé
1 2 3 4 5
| int main ()
{
cout<<"bonjour" endl << "au revoir" <<;
return0;
} |
tu aurais
1 2 3 4 5
| int main ()
{
cout<<"bonjour" endl << "au revoir" <<;
return0;
} |
Les espaces ne seront pas pris en compte par le compilateur, et cela ne changera donc absolument pas la taille de l'exécutable. Mais quel confort de lecture on va gagner
Partager