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 :

Déclarations en C, comment traduire ?


Sujet :

C

  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1
    Par défaut Déclarations en C, comment traduire ?
    Bonjour,

    Les déclarations en C ne sont pas (toutes) faciles à lire :

    Comment traduire ?. Existe-t-il une méthode à appliquer ?.

    Merci

  2. #2
    Membre Expert
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Par défaut
    Voir la reponse a la question 1.21 de la FAQ c.l.c.. cdecl est un outil assez pratique. Pour reprendre ton exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    cdecl> explain char*(*(*x)(void))[];
    declare x as pointer to function (void) returning pointer to array of pointer to char

  3. #3
    Membre très actif
    Avatar de TheDrev
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    310
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 310
    Par défaut
    Tu doit connaitre l'ordre de priorité des opérateurs
    http://www.difranco.net/cop2220/op-prec.htm

    Voir les parenthèses qui servent a modifier cette ordre et celles qui sont utilisé pour indiquer une fonction et ses paramètres.

  4. #4
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Citation Envoyé par moxys Voir le message
    Bonjour,

    Les déclarations en C ne sont pas (toutes) faciles à lire :

    Comment traduire ?. Existe-t-il une méthode à appliquer ?.

    Merci
    Il faut "débobiner" la déclaration :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
             char*(*(*x)(void))[]
    signifie que *(*(*x)(void))[] est un char
    signifie que  (*(*x)(void))[] est un  pointeur sur char
    signifie que  (*(*x)(void)) est un tableau de pointeurs sur char
    signifie que   *(*x)(void)  est un tableau de pointeurs sur char
    signifie que    (*x)(void)  est un pointeur sur un tableau de pointeurs sur char
    signifie que    (*x) est une fonction (ne prenant pas d'arument) retournant un pointeur sur un tableau de pointeurs sur char
    signifie que     *x  est une fonction (ne prenant pas d'arument)retournant un pointeur sur un tableau de pointeurs sur char
    signifie que      x  est un pointeur sur une fonction (ne prenant pas d'argument)retournant un pointeur sur un tableau de pointeurs sur char
    
    x  est un pointeur sur une fonction (ne prenant pas d'argument)retournant un pointeur sur un tableau de pointeurs sur char

Discussions similaires

  1. Réponses: 4
    Dernier message: 08/08/2006, 15h04
  2. Comment traduire un programme C++ en C ?
    Par Djimson dans le forum C
    Réponses: 2
    Dernier message: 20/05/2006, 01h41
  3. Comment traduire en SQL cette condition?
    Par LESOLEIL dans le forum Langage SQL
    Réponses: 8
    Dernier message: 11/08/2005, 16h31
  4. Comment traduire une requête en XPATH ?
    Par vincent1 dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 24/06/2005, 12h46

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