Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
587 connectés 

 


 Mot :   Pseudo :  
 
 Page :   1  2  3  4
Auteur Sujet :

Débuter en C

n°1423667
Elmoricq
Modérateur
Posté le 10-08-2006 à 14:21:59  profilanswer
 

Reprise du message précédent :
Attention : dans ce livre il y a des exercices, mais non corrigés.
A voir si tu aimes travailler sur des exercices ou non, ça dépend des gens.

mood
Publicité
Posté le 10-08-2006 à 14:21:59  profilanswer
 

n°1423699
stephaninh​o
Posté le 10-08-2006 à 14:47:21  profilanswer
 

C'est vital pour moi, j'ai du mal à assimiler la theorie sans exemples. On m'a offert un bouquin pour ça de toute façon. Pas de probleme. Je pense qu'un exo est un exo de toute façon.  
 
J'irai l'acheter des que possible :) !

n°1423701
stephaninh​o
Posté le 10-08-2006 à 14:48:32  profilanswer
 

Cela dit, en attendant, je vais devoir me debrouiller avec ce que je trouve ! lol
 
petite curiosité, concernant une interface graphique. On peut faire ça comment ? Des logiciels sont dispo ?

Message cité 1 fois
Message édité par stephaninho le 10-08-2006 à 15:15:33
n°1423746
2Cent
Posté le 10-08-2006 à 15:19:04  profilanswer
 

"Le langage C" par K&R est un tres bon livre pour debuter et comprendre les principaux mecanismes du C : pointeurs, tableaux, structures ... etc.
Mais je regrette tout de meme que les listes chainées ne soient pas abordées dans ce livre, ce qui est vraiment dommage.
Mais bon les listes chainees c est pas pour tout de suite, Stephaninho.
Par contre jette le livre que tu as actuellement ... des globales (qui de plus sont mal utilisées) dans un programme aussi basique, la declaration du main avant les autres fonctions du programme (mettre le main sous tes autres fonctions t evite d avoir a declarer le prototype de tes fonctions en debut de fichier. Pour un petit programme ca passe pour un plus gros on mettra les prototypes dans un fichier preprocesseur de type *.h mais jamais dans le fichier source *.c)
 

Citation :

C'est surtout un ouvrage de débutant en fait :) (comprendre : pour bien débuter)


Mais ca reste le meilleur. Apres pour aller plus loin dans le C (systeme et bas niveau) c est google + RTFM

Message cité 2 fois
Message édité par 2Cent le 10-08-2006 à 15:20:47
n°1423793
pains-aux-​raisins
Fatal error
Posté le 10-08-2006 à 16:02:16  profilanswer
 

2Cent a écrit :

"Le langage C" par K&R est un tres bon livre pour debuter et comprendre les principaux mecanismes du C : pointeurs, tableaux, structures ... etc.
Mais je regrette tout de meme que les listes chainées ne soient pas abordées dans ce livre, ce qui est vraiment dommage.
Mais bon les listes chainees c est pas pour tout de suite, Stephaninho.
Par contre jette le livre que tu as actuellement ... des globales (qui de plus sont mal utilisées) dans un programme aussi basique, la declaration du main avant les autres fonctions du programme (mettre le main sous tes autres fonctions t evite d avoir a declarer le prototype de tes fonctions en debut de fichier. Pour un petit programme ca passe pour un plus gros on mettra les prototypes dans un fichier preprocesseur de type *.h mais jamais dans le fichier source *.c)
 

Citation :

C'est surtout un ouvrage de débutant en fait :) (comprendre : pour bien débuter)


Mais ca reste le meilleur. Apres pour aller plus loin dans le C (systeme et bas niveau) c est google + RTFM


Dsl, mais les best practices en programmation encourage fortement de toujours écrire le prototype des fonctions.

n°1423801
Elmoricq
Modérateur
Posté le 10-08-2006 à 16:06:41  profilanswer
 

2cent précise bien que les prototypes sont placés dans le .h :o  
En tout cas c'est comme ça que je comprends son post.
 
En tout cas, c'est ce que je fais aussi, sauf les fonctions static dont je me moque bien d'avoir le prototype, vu leur propagation :o


Message édité par Elmoricq le 10-08-2006 à 16:07:33
n°1423823
skelter
Posté le 10-08-2006 à 16:22:49  profilanswer
 

la seule chose qui compte c'est que c'est toujours plus sur si le prototype se trouve avant l'appel, faut pas oublier que malheureusement en C il n'est pas obligatoire (avant un appel), de même pour la déclaration mais la les compilos avertissent.


Message édité par skelter le 10-08-2006 à 16:24:19
n°1423829
2Cent
Posté le 10-08-2006 à 16:24:26  profilanswer
 

Citation :

Dsl, mais les best practices en programmation encourage fortement de toujours écrire le prototype des fonctions.


Quel en est l interet a part surcharger ton fichier source ??
De plus le preprocesseur est fait pour ca entre autre.
Sinon regarde le .h d une lib par exemple, et tu veras que tout les prototypes y sont mentionnés et par consequent ne figurent pas dans les sources mais la ca commence a etre hors sujet.
 

Citation :

petite curiosité, concernant une interface graphique. On peut faire ça comment ? Des logiciels sont dispo ?


En C sous Unix/Linux tu fais intervenir des libs telles que la celebre X11 (ancestrale) ou bien GTK (plus recente).
Sous Windows il y a la MFC (l'explorateur et le demineur sont en MFC par exemple) mais c est du C++ et c est integré à visual studio.
 
s'il vous plait arretez d etre aussi rapide pour repondre j ai pas le temps de me justifier.
Merci Elmoricq et skelter d'avoir detailler tout ca.

Message cité 1 fois
Message édité par 2Cent le 10-08-2006 à 16:26:40
n°1423833
Elmoricq
Modérateur
Posté le 10-08-2006 à 16:25:25  profilanswer
 

GTK existe aussi pour Windows. [:dawa]

n°1423838
2Cent
Posté le 10-08-2006 à 16:28:43  profilanswer
 

Elmoricq a écrit :

GTK existe aussi pour Windows. [:dawa]


Je ne savais pas. Merci de l info.
Par contre sur Windows je pense que MFC doit etre plus adaptée.

Message cité 2 fois
Message édité par 2Cent le 10-08-2006 à 17:02:22
mood
Publicité
Posté le 10-08-2006 à 16:28:43  profilanswer
 

n°1423840
skelter
Posté le 10-08-2006 à 16:30:39  profilanswer
 

2Cent a écrit :


Quel en est l interet a part surcharger ton fichier source ??


 
d'accord, mais pour les fonctions static tu peux les prototyper au début du source et les définir à la fin, ca évite d'encombrer le début du source

n°1423851
Elmoricq
Modérateur
Posté le 10-08-2006 à 16:39:59  profilanswer
 

2Cent a écrit :

]
Je ne savais pas. Merci de l info.
Par contre sur Windows je pense que MFC doit etre plus adaptée.


 
Je suis d'accord, mais ça permet de créer des interfaces graphiques (presque) portables en C.
 

skelter a écrit :

d'accord, mais pour les fonctions static tu peux les prototyper au début du source et les définir à la fin, ca évite d'encombrer le début du source


 
Je trouve qu'au contraire, prototyper une fonction qui n'est présente que dans le fichier source même, ça alourdit le code.
Mais bon, on en revient un peu aux goûts et aux couleurs, comme pour l'indentation, je trouve.


Message édité par Elmoricq le 10-08-2006 à 16:41:15
n°1423853
_darkalt3_
Proctopathe
Posté le 10-08-2006 à 16:42:24  profilanswer
 

2Cent a écrit :

je pense que MFC doit etre plus adaptée.


 
NON A MORT MFC §§§§§

n°1423872
2Cent
Posté le 10-08-2006 à 17:01:48  profilanswer
 

_darkalt3_ a écrit :

NON A MORT MFC §§§§§


Bon j avoue c est pas la meilleur lib graphique du monde : quand tu developpes avec la MFC tu as interet à t y connaitre un max
car quand ca plante et que tu dois debug, tu t amuses. Plus precisement ... developper en MFC avec du copier-coller tuto made in google = ca marchera jamais.
Mais ca reste la seule lib completement integrée à Windows.
 
Au fait le sujet c etait pas : Debuter en C  :D

Message cité 2 fois
Message édité par 2Cent le 10-08-2006 à 17:08:15
n°1423882
_darkalt3_
Proctopathe
Posté le 10-08-2006 à 17:12:05  profilanswer
 

2Cent a écrit :

Bon j avoue c est pas la meilleur lib graphique du monde : quand tu developpes avec la MFC tu as interet à t y connaitre un max
car quand ca plante et que tu dois debug, tu t amuses. Plus precisement ... developper en MFC avec du copier-coller tuto made in google = ca marchera jamais.
Mais ca reste la seule lib completement integrée à Windows.


 
Non, maintenant y'a .net :love:
 
Pour un nouveau développement, c'est se tirer une balle dans le pied que de vouloir utiliser MFC: c'est chiant, c'est moche (ou bien faut passer 2 jours à faire 1 bouton), c'est obsolète, le rad est pourri, ca peut planter n'importe comment si tu passes pas systématiquement par le classwizard, y'a pas de xml dedans, .... j'arrête là.
 

2Cent a écrit :

Au fait le sujet c etait pas : Debuter en C  :D


Fallait pas invoquer le Malin :o

n°1423901
Emmanuel D​elahaye
C is a sharp tool
Posté le 10-08-2006 à 17:25:17  profilanswer
 

stephaninho a écrit :

<...>j'aime comprendre tout ce que je fais.


OK.

Citation :

<...> mais j'ai tendance a bidouiller pour comprendre et la, en bidouillant quelquechose m'echape.


Mauvaise méthode. Il faut suivre une livre ou un tutoriel et cesser de bricoler. Le C c'est pas un langage de bidouilleurs. C'est pas non plus un langage de débutant en informatique... On n'apprend pas à conduire sur une formule 1...

Citation :

voici le programme : Il marche tres bien comme ça.


Project   : Forums
Compiler  : GNU GCC Compiler (called directly)
Directory : C:\dev\forums\
--------------------------------------------------------------------------------
Switching to target: default
Compiling: main.c
main.c:8: warning: return type defaults to `int'
main.c: In function `produit':
main.c:23: warning: type of "x" defaults to "int"
main.c:23: warning: type of "y" defaults to "int"
Linking console executable: C:\dev\forums\forums.exe
Process terminated with status 0 (0 minutes, 6 seconds)
0 errors, 3 warnings


Déjà, il faudrait regler ça...  
 
Ton code commenté et corrigé :

Code :
  1. #include<stdio.h>
  2. /* -ed- pourquoi des globales ?
  3. int a, b, c;
  4. */
  5. /* -ed- inutile ici. Il suffit de definir avant d'utilser.
  6. int produit(int x, int y);
  7. */
  8. /*
  9. int produit(x ,y)
  10. Il est préferable de preciser le type des parametres.
  11. On peut ne pas les mettre (int par defaut), mais c'est du codage de chacal...
  12. */
  13. int produit (int x , int y)
  14. {
  15.    return (x * y);
  16. }
  17. /* -ed-
  18. main()
  19. une des formes correctes est */
  20. int main (void)
  21. {
  22.    int a, b, c;
  23. /* -ed- saisie naive. Soit il faut apprendre a utiliser correctement scanf(),
  24. soit il faut utiliser une autre methode comme fgetc() ou fgets().
  25. */
  26.    printf("Entrez un nombre :" );
  27.    scanf("%d", &a);
  28.    printf("Entrez un second nombre :" );
  29.    scanf("%d", &b);
  30.    c = produit(a, b);
  31.    /* -ed-
  32.          printf("\n %d fois %d = %d", a, b, c);
  33.          la place du \n est en fin de ligne...
  34.    */
  35.    printf("%d fois %d = %d\n", a, b, c);
  36.    return 0;
  37. }


Si tu as des questions, beaucoup de réponses se trouvent sur mon site. Néanmois, pose des questions si tu ne comprends pas...


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1423906
Emmanuel D​elahaye
C is a sharp tool
Posté le 10-08-2006 à 17:29:28  profilanswer
 

stephaninho a écrit :

Cela dit, en attendant, je vais devoir me debrouiller avec ce que je trouve ! lol
 
petite curiosité, concernant une interface graphique. On peut faire ça comment ? Des logiciels sont dispo ?


Une chose à la fois. Commence déjà par apprendre le langage C...
 
Après tu verras comment utiliser telle ou telle API ou bibliothèque... Il faut des notions qui dépassent celles, relativement simples, du langage.
 
Ne pas se précipiter, mais acquérir, assimiler et consolider...
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1423908
Emmanuel D​elahaye
C is a sharp tool
Posté le 10-08-2006 à 17:30:43  profilanswer
 

2Cent a écrit :

"Le langage C" par K&R est un tres bon livre pour debuter et comprendre les principaux mecanismes du C : pointeurs, tableaux, structures ... etc.
Mais je regrette tout de meme que les listes chainées ne soient pas abordées dans ce livre, ce qui est vraiment  
dommage.


Les listes chainées n'ont aucun rapport avec le langage C.
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1423925
Emmanuel D​elahaye
C is a sharp tool
Posté le 10-08-2006 à 17:46:05  profilanswer
 

2Cent a écrit :

<...>MFC<...>Mais ca reste la seule lib completement integrée à Windows.


C'est fini de raconter n'importe quoi. La seul 'lib intégrée à Windows', c'est l'API Win 32. Point.
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1423928
2Cent
Posté le 10-08-2006 à 17:47:19  profilanswer
 

Citation :

Pour un nouveau développement, c'est se tirer une balle dans le pied que de vouloir utiliser MFC: c'est chiant, c'est moche (ou bien faut passer 2 jours à faire 1 bouton), c'est obsolète, le rad est pourri, ca peut planter n'importe comment si tu passes pas systématiquement par le classwizard, y'a pas de xml dedans, .... j'arrête là.


Au moins la MFC tu sais encore a peu pres ce que tu fais ... C++ tu as des pointeurs ... Dotnet y en a pas (enfin si y en a mais c est pas ce qu il y a de plus ergonomique a manier)
 

Citation :

C'est pas non plus un langage de débutant en informatique... On n'apprend pas à conduire sur une formule 1...


La je suis pas trop d accord. Je m explique : le C etant la base de pratiquement tous les langages avancés (je parle ici du C++ et C#), il me parait naturel de commencer par maitriser le C avant de se lancer dans l objet. Apres tu peux toujours te lancer dans les langages de scripting puissant comme PERL mais bon perso je ne considere pas ça comme un langage de programmation

n°1423935
Emmanuel D​elahaye
C is a sharp tool
Posté le 10-08-2006 à 17:52:04  profilanswer
 

2Cent a écrit :

Citation :

Pour un nouveau développement, c'est se tirer une balle dans le pied que de vouloir utiliser MFC: c'est chiant, c'est moche (ou bien faut passer 2 jours à faire 1 bouton), c'est obsolète, le rad est pourri, ca peut planter n'importe comment si tu passes pas systématiquement par le classwizard, y'a pas de xml dedans, .... j'arrête là.


Au moins la MFC tu sais encore a peu pres ce que tu fais ... C++ tu as des pointeurs ... Dotnet y en a pas (enfin si y en a mais c est pas ce qu il y a de plus ergonomique a manier)


Il faut cesser de parler de MFC sur un forum C. Persone ici ne sait ce qu'est une classe...

Citation :


Citation :

C'est pas non plus un langage de débutant en informatique... On n'apprend pas à conduire sur une formule 1...


La je suis pas trop d accord. Je m explique : le C etant la base de pratiquement tous les langages avancés (je parle ici du C++ et C#), il me parait naturel de commencer par maitriser le C avant de se lancer dans l objet. Apres tu peux toujours te lancer dans les langages de scripting puissant comme PERL mais bon perso je ne considere pas ça comme un langage de programmation


Commence donc par Pascal ou Ruby, Pyton etc.
 
Ne pas confondre "apprendre à programmer" et "apprendre un langage"...


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1423938
2Cent
Posté le 10-08-2006 à 17:54:59  profilanswer
 

Citation :

C'est fini de raconter n'importe quoi. La seul 'lib intégrée à Windows', c'est l'API Win 32. Point.


La lib MFC est une implementation de l API Win32. L'API win32 n est pas la meilleur facon de commencer au developpement graphique
Stephaninho, qui je cite souhaitais connaitre une librairie pour developper du graphique, ne va surement pas se servir de l'API win32 elle meme pour commencer.

Message cité 1 fois
Message édité par 2Cent le 10-08-2006 à 18:09:59
n°1423939
pains-aux-​raisins
Fatal error
Posté le 10-08-2006 à 17:55:51  profilanswer
 

2Cent > arrête de troller stp :sleep:

n°1423940
2Cent
Posté le 10-08-2006 à 17:56:27  profilanswer
 

Citation :

Il faut cesser de parler de MFC sur un forum C. Persone ici ne sait ce qu'est une classe...


On parle bien de C sous Windows ... ce qui en soit n est pas la meilleur chose.

Message cité 1 fois
Message édité par 2Cent le 10-08-2006 à 17:57:02
n°1423949
Emmanuel D​elahaye
C is a sharp tool
Posté le 10-08-2006 à 18:21:28  profilanswer
 

2Cent a écrit :

Citation :

Il faut cesser de parler de MFC sur un forum C. Persone ici ne sait ce qu'est une classe...


On parle bien de C sous Windows ... ce qui en soit n est pas la meilleur chose.


Alors renseigne toi sur GTK+...
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1423952
Emmanuel D​elahaye
C is a sharp tool
Posté le 10-08-2006 à 18:23:53  profilanswer
 

2Cent a écrit :

Au moins la MFC tu sais encore a peu pres ce que tu fais ... C++ tu as des pointeurs ... Dotnet y en a pas


Tu racontes vraiment n'importe quoi. Tu confonds .NET et C#...
 
Bref, va faire un tour, prend une douche, tu verras, ça ira mieux...


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1423984
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 10-08-2006 à 19:59:13  profilanswer
 

2Cent a écrit :


Au moins la MFC tu sais encore a peu pres ce que tu fais ... C++ tu as des pointeurs ... Dotnet y en a pas (enfin si y en a mais c est pas ce qu il y a de plus ergonomique a manier)


ouais, super, lolilol  [:ocube]  
allez, un truc tout con : créé une classe dérivée de CDialog, dans son constructeur rajoutes y un CEdit, et met un texte par défaut à ce CEdit. l'opération vraiment de base quoi. compile, lance, attends que le vidage de la mémoire physique se termine, et dis moi si tu comprends ce qu'il est en train de t'arriver  
quant à l'histoire des pointeurs.... non rien


Message édité par Harkonnen le 10-08-2006 à 20:03:18

---------------
J'ai un string dans l'array (Paris Hilton)
n°1424279
stephaninh​o
Posté le 11-08-2006 à 12:28:48  profilanswer
 

Que je rassures tout le monde, ce n'est pas maintenant que je ferai du graphique, j'aimerais d'abord maitriser raisonablement le C, après seulement j'irai massacrer le language pour faire l'interface graphique lol.
 
J'ai vu certain qui disaient qu'il était important de differencier l'apprentissage d'un language et de la programmation... Je suis parfaitement d'accord ! et je le sens.. J'ai fait du pascal mais quand on ne pratique pas ça s'oublie vite... donc j'ai evidement des restes mais c'est un parfois delicat.  
 
J'y retourne de ce pas... enfin, après manger :p  
 
merci encore ;)


Message édité par stephaninho le 11-08-2006 à 12:42:08
n°1424377
_darkalt3_
Proctopathe
Posté le 11-08-2006 à 14:10:21  profilanswer
 

2Cent a écrit :

La lib MFC est une implementation de l API Win32.


 [:le poney de mr pink]  
 
Y'a eu des blablatisations pour moins que ça :o

n°1424744
stephaninh​o
Posté le 12-08-2006 à 14:15:35  profilanswer
 

C'est vrai qu'il est bien le site d'Emmanuel ! :)  
 
Juste une petite question au sujet de l'emploi de return, j'ai bien compris que c'était pour quitter la fonction mais il y a une petite remarque quand à la signification du 0 ou d'une autre valeur en lien avec les erreurs...  
 
précision quant au protype d'une fonction, d'après ce que j'ai compris, #include<stdio.h> nous permet d'eviter de d'ecrire un prototype de la fonction, ici puts() ? Dans quel cas il faut ecrire le prototype la fonction, lorsqu'aucun "fichier" de la bibliotheque ne le contient ? ce n'est pas à ce moment qu'on dit qu'il n'est pas reconnu par la norme ANSI ? du coup, comment le compilo reconnait cette fonction ?
 
je sais je sais.. plein de questions, des infos souvent issues de mon livre d'autre du site d'Emmanuel entre lesquelles j'aimerais faire un lien
 
merci :)

Message cité 1 fois
Message édité par stephaninho le 12-08-2006 à 14:25:30
n°1424751
skelter
Posté le 12-08-2006 à 15:13:39  profilanswer
 

Citation :

Dans quel cas il faut ecrire le prototype la fonction, lorsqu'aucun "fichier" de la bibliotheque ne le contient ?


 
si aucun fichier d'en-tete public ne déclare la fonction c'est peut etre parce-qu'elle n'existe pas ? je comprend pas ta question
 

Citation :


ce n'est pas à ce moment qu'on dit qu'il n'est pas reconnu par la norme ANSI ?


 
un fichier d'en-tete standard peut contenir des prototypes de fonctions standard et non standard, si tu compile en mode strict ANSI (-ansi sous gcc) les prototypes de fonctions non standard sont ignorés au moment de la précompilation

Citation :


du coup, comment le compilo reconnait cette fonction ?


 
en C ANSI si une fonction n'est pas déclarée ca ne génère pas d'erreur, le compilateur génère une déclaration avec int comme type retour

n°1424824
Sve@r
Posté le 12-08-2006 à 21:35:20  profilanswer
 

stephaninho a écrit :

C'est vrai qu'il est bien le site d'Emmanuel ! :)  
 
Juste une petite question au sujet de l'emploi de return, j'ai bien compris que c'était pour quitter la fonction mais il y a une petite remarque quand à la signification du 0 ou d'une autre valeur en lien avec les erreurs...


return sert surtout à renvoyer une valeur à l'appelant. Evidemment return quitte la fonction mais il s'agirait plutôt d'une conséquence et non d'un but.
Maintenant, il peut t'arriver d'écrire des fonctions qui ont un rôle actif pour ton programme mais qui ne renvoient pas de valeur. Par exemple une fonction qui réinitialise une zone de travail. Tu lui passes en paramètre ta zone et la fonction s'occupe de la remettre à 0 (ce n'est là qu'un exemple). Donc tu as à ta disposition un outil de travail (le renvoi de valeur) qui est inutilisé par ta fonction. Alors tu te dis "je vais l'utiliser pour renvoyer à l'appelant une indication que la fonction s'est bien exécutée ou pas" avec la convention "0 = ok" et "pas 0 = problème". C'est pas lourd à implémenter et celui qui utilise ta fonction peut, s'il en a envie, utiliser et tester cette valeur de retour. Il peut aussi simplement l'ignorer. Mais au-moins tu as utilisé tous les outils à ta disposition pour renvoyer à l'appelant le maximum d'informations (surtout si tu commences à établir un code style "1 = erreur x, 2 = erreur y, 3 = erreur z, etc..." )


Message édité par Sve@r le 12-08-2006 à 21:37:04

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°1425086
stephaninh​o
Posté le 13-08-2006 à 17:31:26  profilanswer
 

Citation :

si aucun fichier d'en-tete public ne déclare la fonction c'est peut etre parce-qu'elle n'existe pas ? je comprend pas ta question  


 
J'ai vu sur le site d'Emmanuel qu'il était parfois necessaire de donner le prototype de la fonction, seulement on ne le fait pas à chaque fois, dans quel cas ça s'avere necessaire ?  
 

Citation :

Donc tu as à ta disposition un outil de travail (le renvoi de valeur) qui est inutilisé par ta fonction. Alors tu te dis "je vais l'utiliser pour renvoyer à l'appelant une indication que la fonction s'est bien exécutée ou pas" avec la convention "0 = ok" et "pas 0 = problème". C'est pas lourd à implémenter et celui qui utilise ta fonction peut, s'il en a envie, utiliser et tester cette valeur de retour. Il peut aussi simplement l'ignorer. Mais au-moins tu as utilisé tous les outils à ta disposition pour renvoyer à l'appelant le maximum d'informations (surtout si tu commences à établir un code style "1 = erreur x, 2 = erreur y, 3 = erreur z, etc..." )


 
Je suis désolé mais c'est justement ça que je n'arrive pas à comprendre...  :(

n°1425106
skelter
Posté le 13-08-2006 à 18:16:40  profilanswer
 

stephaninho a écrit :


J'ai vu sur le site d'Emmanuel qu'il était parfois necessaire de donner le prototype de la fonction, seulement on ne le fait pas à chaque fois, dans quel cas ça s'avere necessaire ?  


 
tu peux donner le lien en question sur le site d'Emmanuel ?

n°1425256
stephaninh​o
Posté le 14-08-2006 à 12:39:57  profilanswer
 

Bien sur,  
 
le voici : http://mapage.noos.fr/emdel/init_c.htm  
 
le programme qui dit bonjour !
 
Cette opération d'inclusion est rendue nécessaire à cause de l'appel à la fonction puts(). En effet, il est recommandé (et parfois obligatoire) de fournir au compilateur un prototype à la fonction utilisée

Message cité 1 fois
Message édité par stephaninho le 14-08-2006 à 12:40:10
n°1425267
skelter
Posté le 14-08-2006 à 13:18:33  profilanswer
 

stephaninho a écrit :

Bien sur,  
 
le voici : http://mapage.noos.fr/emdel/init_c.htm  
 
le programme qui dit bonjour !
 
Cette opération d'inclusion est rendue nécessaire à cause de l'appel à la fonction puts(). En effet, il est recommandé (et parfois obligatoire) de fournir au compilateur un prototype à la fonction utilisée


 
ben voila, arrange toi pour toujours fournir le prototype au compilateur c'est tout, meme si c'est pas obligatoire, c'est le C
c'est a cas que servent les fichiers d'en-tete
 
si le prototype d'une fonction n'est pas connu lors de son appel il peux y avoir des erreurs au niveau des types de parametres, le prototype aurait permis d'effectuer les conversions ou de degager une erreur

n°1425472
stephaninh​o
Posté le 15-08-2006 à 09:14:52  profilanswer
 

Oui, c'est bien ce que je pensais, c'est le role des fichies d'en tete... mais je ne vois pas l'interet de le declarer vu que c'est justement le role de ce fichier  :pt1cable:

n°1425528
skelter
Posté le 15-08-2006 à 11:25:33  profilanswer
 

Citation :

Code :
  1. #include <stdio.h>
  2. int main (void)
  3. {
  4.    puts ("Hello world!" );
  5.    return 0;
  6. }



 
on insert le prototype de puts grace à la ligne '#include <stdio.h>', ou tu vois une déclaration de plus ?

n°1426403
stephaninh​o
Posté le 17-08-2006 à 08:39:28  profilanswer
 

dans ce cas non, Emmanuel le precise bien sur son site, c'est parfois obligatoire.... ce sont les cas qui correspondent au parfois qui m'interesse.
 


Message édité par stephaninho le 17-08-2006 à 08:43:07
n°1426588
skelter
Posté le 17-08-2006 à 13:28:49  profilanswer
 

non mais si, la il est fourni le prototype ! et il n'est pas obligatoire
 
le prototype indique au compilateur (en plus du type retour) le type des arguments, lors de l'appel d'une fonction son prototype n'est pas obligatoire mais il est conseillé car il permet d'assurer le typage correcte des arguments (et donc entrainer des conversions ou erreurs de compilation)
quand Emmanuel dit qu'il est parfois obligatoire, je ne sais pas à quoi il fait allusion, il me semble qu'il est obligatoire en C99

n°1427343
stephaninh​o
Posté le 18-08-2006 à 16:27:33  profilanswer
 

C'est ce que j'avais compris...je voulais confirmation !
 
merci
 
je laisse le C99 de coté pr le moment lol

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4

Aller à :
Ajouter une réponse
 

Sujets relatifs
Choisir un langage pour débuter et en faire son métier[J2EE] Débuter en J2EE avec ce que fournit Sun
Debuter en C++ - Un bon Tuto en ligne mais sans C ![debuter en JSP] Ok mais avec quoi ? j'm'y perd...
Livre pour débuter en Java ?Débuter en programmation
[PHP] Quel bouquin pour bien debuterdébuter en vbs
débuter installation eclipse pblprobleme pour débuter java
Plus de sujets relatifs à : Débuter en C


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR