IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Information sur sortie du routines appelantes


Sujet :

C

  1. #1
    Membre actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2008
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2008
    Messages : 464
    Points : 268
    Points
    268
    Par défaut Information sur sortie du routines appelantes
    Je souaite avoir des précisions sur l'instruction return,
    celle ci permet de revenir dans la fonction appelante mais je voudrais savoir si il y a moyen de revenir à la routine appelant la routine appelante.

    Je vous présente le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    void boucle_for(void);
    void dans_sub(void);
    int main(void) {
     boucle_for();
     return 0;
    }
     
    void boucle_for() {
     char *ch;
     
     for(;;) {
      switch(ch=getchar()) {
       case KEY_F(10):
        return TRUE;
        break;
       case KEY_F(11):
        dans_sub();
        break;
      }
     }
    }
     
    void dans_sub() {
      if (condition) {
    /*  Ici je souhaite écrire l'instruction qui me sort de ma boucle for pour revenir dans le main */
    }

  2. #2
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Non, ce n'est pas possible par le langage.

    Quand on a besoin de faire cela, c'est qu'en général, il y a un problème de conception à la base.

    Toutefois, si tu veux persister dans cette voie, il existe une solution à manipuler avec précautions, c'est l'emploi des instructions setjump() et longjump().
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  3. #3
    Membre actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2008
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2008
    Messages : 464
    Points : 268
    Points
    268
    Par défaut
    Ok merci c bien c que je pensais.

    Ca ne m'arrange pas trop mais je vais essayer de me débrouiller autrement

  4. #4
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par VITALTH Voir le message
    Ok merci c bien c que je pensais.

    Ca ne m'arrange pas trop mais je vais essayer de me débrouiller autrement
    Dans un langage structuré comme le Pascal, le C, le BASIC moderne etc, on ne doit plus raisonner en 'sauts' comme en assembleur ou en BASIC primitif, mais en actions conditionnelles (décisions : if, if-else, switch-case) et en boucles (itérations : while, do-while, for).

    Il faut donc revoir ton algorithme en te basant sur ces principes.
    Pas de Wi-Fi à la maison : CPL

  5. #5
    Membre actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2008
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2008
    Messages : 464
    Points : 268
    Points
    268
    Par défaut
    Je suis tout à fait d'accord avec toi mais je vais expliquer mon soucis

    J'ai n programmes (on va dire n=100)
    avec le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    int main programme_n(void) {
    // Ici des données représentées sous la forme d un grand tableau
     
    #include algorithme.h
    return 0;
    }
    Dans le fichier algorithme.h j'utilise un algorithme qui marche pour mes n programmes en fonction des données représentées dans le grand tableau.

    Eventuellement dans ce tableau (qui est en fait un tableau de structure) on retrouve des adresses de fonctions qui sont des bout d'algorithme non traité dans le fichier algorithme.h.

    Il se trouve qu'avant d'écrire le fichier algorithme.h j'ai vérifié qu'il était compatible avec disons une vingtaines de cas.

    Le probleme c'est qu'après avoir écrit s programmes (disons s=50) je me rend compte que j'ai oublié un ou deux cas :
    C'est pour cela que je voulais sortir dans mon fichier algorithme.h d'une boucle et je voulais le faire dans une des fonctions définit dans le tableau de structure d'un de ces n programmes.

    Ceci dit je préfère modifier le fichier alogrithme.h et vérifier qu'il est compatible avec mes n programmes que d'utiliser des bibliothèques de c non standard.

  6. #6
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par VITALTH Voir le message
    Dans le fichier algorithme.h j'utilise un algorithme qui marche pour mes n programmes en fonction des données représentées dans le grand tableau.

    Eventuellement dans ce tableau (qui est en fait un tableau de structure) on retrouve des adresses de fonctions qui sont des bout d'algorithme non traité dans le fichier algorithme.h.

    Il se trouve qu'avant d'écrire le fichier algorithme.h j'ai vérifié qu'il était compatible avec disons une vingtaines de cas.

    Le probleme c'est qu'après avoir écrit s programmes (disons s=50) je me rend compte que j'ai oublié un ou deux cas :
    C'est pour cela que je voulais sortir dans mon fichier algorithme.h d'une boucle et je voulais le faire dans une des fonctions définit dans le tableau de structure d'un de ces n programmes.

    Ceci dit je préfère modifier le fichier alogrithme.h et vérifier qu'il est compatible avec mes n programmes que d'utiliser des bibliothèques de c non standard.
    C'est pas comme ça qu'on fait. On utilise les callbacks. Regarde l'usage de la fonction qsort() et essaye d'imaginer un mécanisme équivalent chez toi.

    http://emmanuel-delahaye.developpez.com/qsort.htm

    En plus, tu m'as l'air de mettre du code dans des .h, ce qui est une pratique exécrable...
    Pas de Wi-Fi à la maison : CPL

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Sortie des informations sur un fichier
    Par ayoubnour dans le forum Langage
    Réponses: 5
    Dernier message: 15/06/2009, 09h00
  2. Réponses: 12
    Dernier message: 12/12/2004, 14h25
  3. Réponses: 3
    Dernier message: 01/02/2004, 21h24
  4. Informations sur les procédures stockées
    Par jfphan dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 13/01/2004, 14h30
  5. Réponses: 6
    Dernier message: 28/09/2003, 17h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo