Niouzes.org  

Précédent   Niouzes.org > Forum > Newsgroup fr.comp.lang.* Forum > Newsgroup fr.comp.lang.c
S'inscrire FAQ Membres Calendrier Recherche Messages du jour Marquer les forums comme lus



Réponse

 

LinkBack Outils de la discussion Modes d'affichage
  #1 (permalink)  
Vieux 28/08/2008, 16h22
Marc Espie
 
Messages: n/a
Par défaut Re: Quel tutoriel pour débuter ?

In article <slrngbdeco.5so.Marc.Boyer***ubu.enseeiht.fr>,
Marc Boyer <Marc.Boyer***enseeiht.yahoo.fr> wrote:
>> Pour un main() sans return, l'accolade terminale du bloc de définition
>> de la fonction doit jouer le rôle d'un return sec mais quid de la valeur
>> de retour ?

>
> De tête, ce doit être 0, la valeur de EXIT_SUCCESS. A confirmer.


Faux.

C'est le cas en C++, mais pas en C, et il y a explicitement un paragraphe
de la norme qui explicite la difference (sachant qu'en C++, main n'est
de toutes facons PAS une fonction comme les autres).

Comme le dit candide, c'est un `retour sec'. Sur la plupart des archis,
les retours de valeurs entieres simples se font dans un registre du
processeur. On recupere alors la valeur qui se trouvait
dans le registre au moment du retour de la fonction, c'est-a-dire n'importe
quoi.

Et pour faire plaisir a candide, qui sinon va encore fait chier que lui,
tout ce qui l'interesse, c'est la norme, et pas les mecanismes de telle
machine en particulier, la norme classe explicitement tout ceci en
undefined behavior... bref, c'est une faute si on a un des prototypes
standards de main.

Le seul cas ou ca n'en est pas une, c'est que la norme prevoit egalement
que main() peut disposer de prototypes non-standards (qui doivent etre
definis par l'implementation). C'est prevu pour autoriser les appels a la
Unix, ou il traine un 3e parametre qui permet d'acceder a l'environnement,
mais ca peut permettre a des implementation de definir un void main()
(qui rappelons-le, n'a rien a faire dans un enseignement du C standard et
portable).
Réponse avec citation
Alt Today
Advertising
Google Adsense
 
This advertising will not be shown
in this way to registered members.
Register your free account today
and become a member on
Niouzes.org
Standard Sponsored Links

  #2 (permalink)  
Vieux 28/08/2008, 18h50
Marc Espie
 
Messages: n/a
Par défaut Re: Quel tutoriel pour débuter ?

In article <pxbhc95ytge.fsf***news.bourguet.org>,
Jean-Marc Bourguet <jm***bourguet.org> wrote:
>espie***lain.home (Marc Espie) writes:
>
>> In article <slrngbdeco.5so.Marc.Boyer***ubu.enseeiht.fr>,
>> Marc Boyer <Marc.Boyer***enseeiht.yahoo.fr> wrote:
>> >> Pour un main() sans return, l'accolade terminale du bloc de définition
>> >> de la fonction doit jouer le rôle d'un return sec mais quid de la valeur
>> >> de retour ?
>> >
>> > De tête, ce doit être 0, la valeur de EXIT_SUCCESS. A confirmer.

>>
>> Faux.
>>
>> C'est le cas en C++, mais pas en C, et il y a explicitement un paragraphe
>> de la norme qui explicite la difference (sachant qu'en C++, main n'est
>> de toutes facons PAS une fonction comme les autres).

>
>C99 s'est aligne sur le C++:
>
>5.1.2.2.3 Program termination
>
>1 If the return type of the main function is a type compatible with int, a
>return from the initial call to the main function is equivalent to calling
>the exit function with the value returned by the main function as its
>argument;10) reaching the } that terminates the main function returns a
>value of 0. If the return type is not compatible with int, the termination
>status returned to the host environment is unspecified.


Donc, d'ici 10 ans, ca sera utilisable. Pour info, le `mode' par defaut
du gcc que j'ai sous la main est conforme a C90, pas C99... si je specifie
-std=c99, effectivement, ca fonctionne...
Réponse avec citation
  #3 (permalink)  
Vieux 28/08/2008, 21h40
Marc Espie
 
Messages: n/a
Par défaut Re: Quel tutoriel pour débuter ?

In article <m2d4jtdlsj.fsf***minuetto.depot.rail.eu.org>,
Erwan David <erwan***rail.eu.org> wrote:
>espie***lain.home (Marc Espie) écrivait***:
>
>>
>> Donc, d'ici 10 ans, ca sera utilisable. Pour info, le `mode' par defaut
>> du gcc que j'ai sous la main est conforme a C90, pas C99... si je specifie
>> -std=c99, effectivement, ca fonctionne...

>
>Et attention, si on va dans l'embarqué on trouve du
>
>"The latest release of MIPS® SDE is 6.06.00 based on gcc3.4."


Tu sais, on est toujours sur gcc 3.3 sur OpenBSD... entre autres parce
qu'on trouve que les versions plus recentes se foutent du monde cote
vitesse de compilation et consommation memoire.
Réponse avec citation
 
Réponse
Tags: , ,



Outils de la discussion
Modes d'affichage

Règles de messages
Vous pouvez ouvrir de nouvelles discussions : nonoui
Vous pouvez envoyer des réponses : nonoui
Vous pouvez insérer des pièces jointes : nonoui
Vous pouvez modifier vos messages : nonoui

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui



Fuseau horaire GMT. Il est actuellement 16h16.

Italiano - German - English - Español


Édité par : vBulletin® version 3.6.8
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO 3.1.0 © 2007, Crawlability, Inc. Tous droits réservés.
Version française #13 par l'association vBulletin francophone


Politique - Droit - Philosophie - Football - Medicine - Française - Bricolage - Photo - Mac Os X - Divers - Physique - Jardinage
Mecanique - Moto - Photographie - Rail - Route - Aviation - Cinema - Linux - Psychanalyse - Finance - Enigmes - Rugby
Environnement - Histoire - Programmes TV - Education - Travail - Voyages - Windows - Immobilier - Cuisine
Windows XP - Excel - Word - Outlook - Access - Internet Explorer - Office - Vista

Page generated in 0,32613 seconds with 10 queries