Compilation avec gcc

Résolu/Fermé
Nowhere Man Messages postés 307 Date d'inscription samedi 5 juillet 2008 Statut Membre Dernière intervention 8 avril 2011 - 12 mars 2009 à 23:13
Nowhere Man Messages postés 307 Date d'inscription samedi 5 juillet 2008 Statut Membre Dernière intervention 8 avril 2011 - 12 mars 2009 à 23:50
Bonjour,
J'ai installé un système Linux (Mandriva) en machine virtuelle sous mon Windows Vista, j'ai mis en place ma base de données urpmi puis j'ai téléchargé l'éditeur joe ainsi que je compilateur gcc.
J'ai édité sous joe ce code :
#include <stdio.h>
#include <stdlib.h>

int main()
{
  printf("Test");
  getchar();
}


C'était juste un programme tout bête pour tester le compilateur, je l'ai ensuite enregistré dans un fichier main.c et en console j'ai fait :
cc main.c -o test.bin


Et ici, j'obtiens une erreur :
main.c:8:2: attention : pas de retour chariot à la fin du fichier


Par contre je peux lancer l'exécutable sans aucun problème :
./test.bin


Je voudrais juste savoir à quoi correspond ce code d'erreur, et s'il y a quelque chose à faire... merci d'avance !

4 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 841
12 mars 2009 à 23:18
Salut,
Certains compilateurs veulent une ligne vide à la fin du programme. Essaie, et tu ne devrais plus avoir le message d'erreur.
Par contre n'oublie pas de mettre :
return 0;
avant l'accolade finale.
Cdlt
0
Et bien le compilateur est on ne peu plus explicite; il veut un retour chariot à la fin du fichier... c'est à dire une ligne blanche!
D'autre part, tu déclares: 'int main()' donc la fonction 'main' doit se terminer par un 'return int'.
0
Nowhere Man Messages postés 307 Date d'inscription samedi 5 juillet 2008 Statut Membre Dernière intervention 8 avril 2011 94
12 mars 2009 à 23:33
Oui merci beaucoup ça marche =)
J'ai mis le return 0; et j'ai sauté un ligne à la fin. Par contre je ne comprends pas pourquoi return int... je n'ai aucune erreur à la compilation et je ne l'ai jamais utilisé, à quoi sert-il ?

Merci encore
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 841
12 mars 2009 à 23:41
Le return 0, sert à dire au programme appelant que tout s'est bien passé.
Ton compilateur ne te dit rien, car tu n'as pas dû compiler avec les options de warnings qui vont bien. Sinon il te l'aurait dit. De toute façon, à part pour les fonctions void, une fonction doit toujours retourner une valeur en concordance avec son prototype.
0
Nowhere Man Messages postés 307 Date d'inscription samedi 5 juillet 2008 Statut Membre Dernière intervention 8 avril 2011 94
12 mars 2009 à 23:50
Non mais pour le return 0; je savais c'est un oubli de ma part dans le premier code, c'était juste pour le return int; je n'en avais jamais entendu parler...
Merci, à + !!
0