Gros débutant en programmation, problême por compiler (gcc)


#1

bonjour tout le monde,
je débute tout juste en programmation et je n’arrive pas à compiler mon premier programme, (afficher “Bonjour” à l’écran, je pense que vous devez connaître :slightly_smiling: ).
le code source du programme en question ( au cas ou je me suis trompé quelque part):

#include <stdio.h>

void main ()
{
puts (“bonjour”);
getchar ();
return;
}

ensuite je tente de compiler avec gcc:

gcc -c /home/tonks/tryC/programme1.c

et ça me donne ceci:

:~$ gcc -c /home/tonks/tryC/programme1.c
/home/tonks/tryC/programme1.c: Dans la fonction « main »:
/home/tonks/tryC/programme1.c:4: attention : le type de retour de « main » n’est pas « int »
/home/tonks/tryC/programme1.c:8:2: attention : pas de retour chariot à la fin du fichier

Voila. Si j’ai bien compris le tutorial que j’utilise, je devrais normalement obtenir un fichier objet, mais ce n’est pas le cas.
Pourriez vous m’expliquer ce que tout cela veut dire, j’avoue que je suis “déja” largué, je n’arrive pas à savoir ou se trouve mon erreur.
Je vous remercie d’avance, j’espere que je ne raconte pas de bêtises et désolé si la question s’avère être stupide, je débute.


#2

Bonsoir,
Essaye d’utiliser la balise code pour poster tes codes c’est beaucoup plus lisible.

Ensuite tu peux aller voir sur ce site c’est plutot bien expliquer bon pas encore complet mais pour débuter c’est tres bien mapage.noos.fr/emdel/

ensuite on arrive a ton prog
je ne sais pas si c’est le post qui fait ca mais le #include <stdio.h>
devrais plutot etre

Ensuite main est toujours du type int (voir le lien ci dessus pour plus d’explication) ce qui donne donc

int main et comme tu ne lui passe aucun parametre ca doit donc donner

Toujours retourner quelque chose en C donc la derniere instruction devrais etre return 0;
Ce qui donne donc

[code]#include <stdio.h>

int main ()
{
puts (“bonjour”);
getchar ();
return 0;
}
[/code]et surtout ne pas oublier de passer une ligne à la fin du code sinon tu obtiendra le meme warning :slightly_smiling:[quote]/home/tonks/tryC/programme1.c:8:2: attention : pas de retour chariot à la fin du fichier [/quote]
Tu peux aussi tout compiler d’un coup gcc tonfichier.c -o tonexecutableBon code :wink:


#3

je crois que certains compilateurs n’acceptent pas void main()
je suis d’accord avec Ashgenesis int main et return 0 est la meilleur solution


#4

"Le type retourné par main()

Bien que main() soit censé retourner un int, on voit quelquefois écrit

void main (void) { }

Qu’en est-il exactement ?

D’après la définition du langage C, dans un programme conforme, main() doit retourner int. D’ailleurs un compilateur comme Borland C 3.1 en mode ANSI refuse void main() (error). Dans les mêmes conditions, gcc qui émet un avertissement (warning).
Historique

Dès l’apparition du langage C, une des formes canoniques de main() était

main() { return 0; }

l’autre étant la forme qui permet de récupérer les arguments de la ligne de commande.

Il faut bien comprendre qu’à cette époque, une fonction définie sans type de retour explicite, retournait un int (c’est toujours le cas en C90, mais plus en C99 où le type doit être explicite). Le mot clé ‘void’ n’existait pas.

Il n’y avait donc aucune raison d’utiliser une forme void main().

Ensuite, est venue la normalisation du langage C. (1989 ANSI, 1990 ISO). Dans le texte, les deux formes canoniques sont décrites :

et

Il est précisé en remarque (dans la partie non normative) qu’il existe d’autres formes sans autres précisions. Elles ne font donc pas partie de la norme, leur comportement est donc indéfini dans le cadre d’un programme respectueux de la norme (dit ‘strictement conforme’)."

Extrait de mapage.noos.fr/emdel/notes.htm#typemain
Pour l’explication sur le int main(void) :slightly_smiling:


#5

Tiens premiere fois que ca m’arrive de poster sans etre connecter :laughing: :laughing:
C’est moi l’inviter au dessus :slightly_smiling:


#6

T trop fort :smiley:


#7

#8

Tu veux nous faire croire que toute cette science est de toi, mais ça ne prend pas ! C’était sûrement Kernighan ou Ritchie qui nous rendait visite. Ca s’est déjà vu…

On ne me la fait pas ! :mrgreen:


#9

suivi de [quote=“invité”]Extrait de mapage.noos.fr/emdel/notes.htm#typemain
Pour l’explication sur le int main(void)
[/quote]

Il faut bien tout lire :slightly_smiling:
Je n’ai jamais dit que c’etais de moi toute l’explication j’ai dit que c’etais moi qui avait poster l’explication est d’Emmanuel Delahaye et proviens de son site dont je fais reference deux fois :slightly_smiling:


#10

Bonsoir,
merci beaucoup pour votre coup de main, j’ai apporté les modification que vous m’aviez conseillées et ça marche. Encore merci.
A+