1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    octobre 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : octobre 2008
    Messages : 25
    Points : 21
    Points
    21

    Par défaut probleme lors de la compilation

    Bonjour,

    J'apprends à programmer en C.

    Je suis entrain d’écrire un programme d'atari-go: http://senseis.xmp.net/?AtariGo

    pour l'instant je suis entrain de créer la taille du goban (5x5,7x7,9x9,13x13 ou 19x19)

    a chaque fois que je vais insérer du nouveau code (boucle, fonction, etc...) je le compile pour voir s'il y a des erreurs.

    voici mon code (Main.c):

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
     
    #include <stdio.h>
    #include <stdlib.h>
    int c=0;
    int i,j;
    unsigned char p[19][19];
    int new=1;
    int main(int argc,char *argv[]){
    printf("Nouveau jeu: (O ou N)?\n\t1) Oui\n\t2) Non\n\nVotre choix:");
    scanf("%d",&new);
    printf ("Taille du Goban:\n\t1) 5x5\n\t2) 7x7\n\t3) 9x9\n\t4) 13x13\n\t5) 19x19\n\nVotre choix:");
    scanf("%d",&c);
     
     if ((c==1) && (new==1))
    {
    /* init board */
          for (i = 0; i < 5; i++)
            for (j = 0; j < 5; j++)
              p[i][j] = 0;
    if ((c==2) && (new==1))
    {
    /* init board */
          for (i = 0; i < 7; i++)
            for (j = 0; j < 7; j++)
              p[i][j] = 0;
    }
    if ((c==3) && (new==1))
    {
    /* init board */
          for (i = 0; i < 9; i++)
            for (j = 0; j < 9; j++)
              p[i][j] = 0;
    }
    if ((c==4) && (new==1))
    {
    /* init board */
          for (i = 0; i < 13; i++)
            for (j = 0; j < 13; j++)
              p[i][j] = 0;
    }
    if ((c==5) && (new==1))
    {
    /* init board */
          for (i = 0; i < 19; i++)
            for (j = 0; j < 19; j++)
              p[i][j] = 0;
    }
    }
     
    showboard(c);
    return 0;
    }
    puis showboard.c:

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
     
    #include <stdio.h>
    #include <stdlib.h>
     
    int ii=0;
    int i=0;
    int j=0;
    void showboard(int c){
     
    if (c==1){
     unsigned char p[5][5];
    printf("   A B C D E\n");
        for (i = 0; i < 5; i++){
          ii = 5 - i;
          printf("%2d",ii);
     
          for (j = 0; j < 5; j++)
            if (p[i][j] == 0)
               printf(" -");
            else if (p[i][j] == 1)
                    printf(" O");
                 else printf(" X");
     
          printf("%2d",ii);
          printf("\n");
     
         }
    printf("   A B C D E\n");
    }
     
    if (c==2){
     unsigned char p[7][7];
    printf("   A B C D E F G\n");
        for (i = 0; i < 7; i++){
          ii = 7 - i;
          printf("%2d",ii);
     
          for (j = 0; j < 7; j++)
            if (p[i][j] == 0)
               printf(" -");
            else if (p[i][j] == 1)
                    printf(" O");
                 else printf(" X");
     
          printf("%2d",ii);
          printf("\n");
     
         }
    printf("   A B C D E F G\n");
    }
     
    if (c==3){
     unsigned char p[9][9];
    printf("   A B C D E F G H J\n");
        for (i = 0; i < 9; i++){
          ii = 9 - i;
          printf("%2d",ii);
     
          for (j = 0; j < 9; j++)
            if (p[i][j] == 0)
               printf(" -");
            else if (p[i][j] == 1)
                    printf(" O");
                 else printf(" X");
     
          printf("%2d",ii);
          printf("\n");
     
         }
    printf("   A B C D E F G H J\n");
    }
     
    if (c==4){
     unsigned char p[13][13];
    printf("   A B C D E F G H J K L M N\n");
        for (i = 0; i < 13; i++){
          ii = 13 - i;
          printf("%2d",ii);
     
          for (j = 0; j < 13; j++)
            if (p[i][j] == 0)
               printf(" -");
            else if (p[i][j] == 1)
                    printf(" O");
                 else printf(" X");
     
          printf("%2d",ii);
          printf("\n");
     
         }
    printf("   A B C D E F G H J K L M N\n");
    }
     
    if (c==5){
     unsigned char p[19][19];
    printf("   A B C D E F G H J K L M N O P Q R S T\n");
        for (i = 0; i < 19; i++){
          ii = 19 - i;
          printf("%2d",ii);
     
          for (j = 0; j < 19; j++)
            if (p[i][j] == 0)
               printf(" -");
            else if (p[i][j] == 1)
                    printf(" O");
                 else printf(" X");
     
          printf("%2d",ii);
          printf("\n");
     
         }
    printf("   A B C D E F G H J K L M N O P Q R S T\n");
    }
     
    }
    quand je compile mon code, j'ai une erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    cc -O   -c -o main.o main.c
    main.c: In function ‘main’:
    main.c:9:1: warning: ignoring return value of ‘scanf’, declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d",&new);
     ^
    main.c:11:1: warning: ignoring return value of ‘scanf’, declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d",&c);
     ^
    cc -std=c99  main.o showboard.o   -o aigo
    pouvez vous m'aider?

  2. #2
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    février 2006
    Messages
    5 846
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : février 2006
    Messages : 5 846
    Points : 16 117
    Points
    16 117
    Billets dans le blog
    1

    Par défaut

    Citation Envoyé par ludovic787 Voir le message
    quand je compile mon code, j'ai une erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    cc -O   -c -o main.o main.c
    main.c: In function ‘main’:
    main.c:9:1: warning: ignoring return value of ‘scanf’, declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d",&new);
     ^
    main.c:11:1: warning: ignoring return value of ‘scanf’, declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d",&c);
     ^
    cc -std=c99  main.o showboard.o   -o aigo
    pouvez vous m'aider?
    Bonjour

    Ce n'est pas une erreur, c'est un "warning". Cela signifie grosso-modo de la part du compilo "attention, tu écris un truc pas vraiment propre mais je peux quand-même le comprendre". Donc ton code compile quand-même. Ceci dit, les programmeurs de C qui se veulent consciencieux écrivent du code sans warning (surtout qu'avec un warning il existe une chance pour que le compilo comprenne "mal" ton idée).

    Il se trouve que la fonction scanf() renvoie le nombre de variables qu'elle a pu réellement remplir. Ca permet par exemple, quand ce nombre ne correspond pas au nombre attendu, de détecter qu'il y a eu une erreur de saisie et donc d'agir en conséquence. Toi tu utilises cette fonction sans traiter cette valeur et ton compilo te dit juste que ce n'est peut-être pas très correct.
    Tu peux éliminer ce warning en castant en (void) tous tes scanf() ou bien en rajoutant l'option "-Wunused-result" dans ta ligne de compilation => cc -Wunused-result -O -c -o main.o main.c. Ceci dit c'est quand-même bizarre parce que d'une part ça te le fait aux scanf et pas aux printf (elles aussi renvoient une valeur que tu ne récupères pas) et d'autre part on fait ça tellement souvent (d'utiliser les fonctions pour leur travail et donc sans récupérer forcément ce qu'elles renvoient) que cette option est généralement incluse par défaut (chez-moi ton main compile sans souci avec ta ligne de commande) donc j'aimerais bien savoir sur quel environnement tu développes...

    Autre chose: quand on écrit du C, on l'écrit avec une indentation propre. Ca montre d'une part que tu aimes ce que tu fais (produire un code élégant) et d'autre part ça aide à te relire/faire évoluer
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    octobre 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : octobre 2008
    Messages : 25
    Points : 21
    Points
    21

    Par défaut

    Merci pour la réponse,

    Je pense avoir resolu mon probleme par moi meme:

    j'ai mis avant les scanf

    int n=scanf("%d",&new);
    int t=(scanf("%d",&c);

    et dans ma fonction showboard , j'ai mis un extern char p[19][19]

    J'ai créé un makefile (j'utilise gcc sous linux):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    SRC = main.c showboard.c \
    
    OBJ = main.o showboard.o \
    
    PRG = aigo
     
    CFLAGS = -O
    $(PRG) : $(OBJ)
    	$(CC) -std=c99  $(OBJ)  -o $@
    et pour l'indentation (je n'ai pas encore installé geany)
    Merci

  4. #4
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    février 2006
    Messages
    5 846
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : février 2006
    Messages : 5 846
    Points : 16 117
    Points
    16 117
    Billets dans le blog
    1

    Par défaut

    Citation Envoyé par ludovic787 Voir le message
    Je pense avoir resolu mon probleme par moi meme:

    j'ai mis avant les scanf

    int n=scanf("%d",&new);
    int t=(scanf("%d",&c);
    Mouais. Tu crées des variables inutiles. Tu soignes les symptômes et non la maladie.

    Citation Envoyé par ludovic787 Voir le message
    et dans ma fonction showboard , j'ai mis un extern char p[19][19]
    Ah oui, tu fais bien d'y venir. Les variables globales sont rarement une bonne idée. Ca simplifie peut-être les problèmes au début mais ça les déporte ailleurs en les démultipliant. Surtout quand ces variables globales ont des noms aussi intelligents que "i", "j", "ii" ou "p".
    Chaque fonction doit avoir ses propres variables de travail et si des infos doivent passer de l'une à l'autre alors on utilises les paramètres. Et si on commence à avoir pas mal de trucs à communiquer (dans un projet par exemple) alors on crée une structure contenant tous les trucs et on se passe cette structure. Par exemple moi, pour mes projets, j'ai un objet "cEnv" contenant tout mon environnement (nom du projet, version, répertoire temporaire, os, etc), un objet "cConfig" contenant toute ma configuration (nom de la bdd, port, options de l'utilisateur, etc). Ensuite mes fonctions reçoivent ces deux objets et ont automatiquement accès à tous ces éléments.
    Bref un projet c'est comme une maison: ça commence par des fondations solides.

    Citation Envoyé par ludovic787 Voir le message
    J'ai créé un makefile (j'utilise gcc sous linux):
    Moi aussi et mon gcc a compilé ton code initial sans souci

    Citation Envoyé par ludovic787 Voir le message
    et pour l'indentation (je n'ai pas encore installé geany)
    Et ça t'empêche d'indenter ??? Accessoirement ce n'est pas parce que tu t'orientes vers la prog qu'il faut oublier les autres connaissances notemment en matière de grammaire. Déjà d'une part parce que la grammaire permet à ton interlocuteur de te lire facilement (il ne laggue pas sans cesse en revenant au début de la phrase parce que sa signification va à l'encontre de la signification des mots) et d'autre part parce que ça reste utile surtout pour exprimer ses idées. "a essayé" et "à essayer" se prononcent de la même façon mais signifient des choses totalement différentes...
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    octobre 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : octobre 2008
    Messages : 25
    Points : 21
    Points
    21

    Par défaut

    Je suis revenu à mon ancien code: en enlevant les int avant les scanf.

    en utilisant la commande: gcc main.c showboard.c -o aigo

    je n'ai plus de problème.

    alors que si je mets dans mon makefile -Wunused-result. j'ai encore l'erreur du début.

    Et ça t'empêche d'indenter ??? Accessoirement ce n'est pas parce que tu t'orientes vers la prog qu'il faut oublier les autres connaissances notamment en matière de grammaire.
    J'ai appris à programmer en suivant les cours sur FUN Mooc:
    ABC du langage C et Programmer en C pour avoir les bases.

  6. #6
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    février 2006
    Messages
    5 846
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : février 2006
    Messages : 5 846
    Points : 16 117
    Points
    16 117
    Billets dans le blog
    1

    Par défaut

    Citation Envoyé par ludovic787 Voir le message
    alors que si je mets dans mon makefile -Wunused-result. j'ai encore l'erreur du début.
    Ok, c'est l'option "-std=c99" qui la rajoute (ça me fait pareil chez-moi avec cette option). Et contrairement à ce que je pensais, l'option "-Wunused-result" ne demande pas de supprimer ce contrôle mais demande au contraire de le forcer. Toutefois chez-moi, cette option ne change rien à la compilation de ton code (je l'ai demandée et ton code compile sans problème).

    Bravo pour ton observation. Tu ne te laisses pas faire et quand tu as raison c'est bien. N'oublies pas non plus d'admettre aussi tes erreurs et tu feras un grand homme.
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site

  7. #7
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    septembre 2005
    Messages
    26 473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : septembre 2005
    Messages : 26 473
    Points : 38 201
    Points
    38 201

    Par défaut

    Citation Envoyé par Sve@r Voir le message
    Il se trouve que la fonction scanf() renvoie le nombre de variables qu'elle a pu réellement remplir. Ca permet par exemple, quand ce nombre ne correspond pas au nombre attendu, de détecter qu'il y a eu une erreur de saisie et donc d'agir en conséquence. Toi tu utilises cette fonction sans traiter cette valeur et ton compilo te dit juste que ce n'est peut-être pas très correct.
    Tu peux éliminer ce warning en castant en (void) tous tes scanf() ou bien en rajoutant l'option "-Wunused-result" dans ta ligne de compilation => cc -Wunused-result -O -c -o main.o main.c. Ceci dit c'est quand-même bizarre parce que d'une part ça te le fait aux scanf et pas aux printf (elles aussi renvoient une valeur que tu ne récupères pas) et d'autre part on fait ça tellement souvent (d'utiliser les fonctions pour leur travail et donc sans récupérer forcément ce qu'elles renvoient) que cette option est généralement incluse par défaut (chez-moi ton main compile sans souci avec ta ligne de commande) donc j'aimerais bien savoir sur quel environnement tu développes...
    Ce n'est pas bizarre du tout: Dans stdio.h, scanf() a été déclarée avec __attribute((warn_unused_result)), et printf() non.
    C'est parce que la valeur de retour de scanf() est beaucoup plus importante que celle de printf(), parce que scanf() ne modifie pas les arguments qu'elle n'a pas pu convertir. Résultat, si on passe à scanf() l'adresse d'une variable non-initialisée, si la chaîne entrée est mauvaise, la variable est toujours non-initialisée!

    C'est pourquoi en règle générale, il faut toujours lire et vérifier la valeur retournée par scanf(), et non pas caster le retour de fonction en void.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    octobre 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : octobre 2008
    Messages : 25
    Points : 21
    Points
    21

    Par défaut

    Je vais revoir comment faire un Makefile.
    je continuerais à compiler avec la ligne gcc main.c showboard.c -o aigo en attendant.

    Et encore merci pour ton aide

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    octobre 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : octobre 2008
    Messages : 25
    Points : 21
    Points
    21

    Par défaut boucle while indefini

    dans mon code j'ai introduis une boucle while pour ne prendre que les valeurs de scanf, mais je tourne en boucle a l’intérieure de celle ci.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    while ((new!=1)||(new!=2)){
    	printf("Nouveau jeu: (O ou N)?\n\t1) Oui\n\t2) Non\n\nVotre choix:");
    	scanf("%d",&new);
    }
     
    while ((c!=1)||(c!=2)||(c!=3)||(c!=4)||(c!=5)){
    	printf ("Taille du Goban:\n\t1) 5x5\n\t2) 7x7\n\t3) 9x9\n\t4) 13x13\n\t5) 19x19\n\nVotre choix:");
    	scanf("%d",&c);
    }
    merci de votre aide

  10. #10
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    septembre 2005
    Messages
    26 473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : septembre 2005
    Messages : 26 473
    Points : 38 201
    Points
    38 201

    Par défaut

    Trois problèmes:
    1. Tu ne lis toujours pas la valeur de retour de scanf().
    2. Quand celle-ci n'est pas satisfaisante, il faut lire le reste de la ligne dans le buffer sinon scanf() n'arrêtera pas d'échouer sur le même caractère. La première fonction de ce post le fait en appelant fgetc() en boucle sur stdin.
    3. Regarde cette ta condition while ((new!=1)||(new!=2)){ d'un peu plus près. Que se passe-t-il si la valeur est 42? Que se passe-t-il si la valeur est 1?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    octobre 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : octobre 2008
    Messages : 25
    Points : 21
    Points
    21

    Par défaut

    Je viens de trouver mon erreur:

    il suffit de remplacer les || par &&.

    Merci

  12. #12
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    février 2006
    Messages
    5 846
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : février 2006
    Messages : 5 846
    Points : 16 117
    Points
    16 117
    Billets dans le blog
    1

    Par défaut

    Citation Envoyé par ludovic787 Voir le message
    il suffit de remplacer les || par &&.
    Lois mathématique de "De Morgan". non(A OU B) = non(A) ET non(B) ; et non(A ET B) = non(A) OU non(B)
    Tu veux un choix sur "1 ou 2", tu refuseras donc tout choix sur "non(1) et non(2)"
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site

Discussions similaires

  1. [utf8] Problème lors de la compilation
    Par ChipsterJulien dans le forum Editeurs / Outils
    Réponses: 1
    Dernier message: 10/03/2006, 17h36
  2. [Free Pascal] Problème lors de la compilation
    Par llaurentt dans le forum Free Pascal
    Réponses: 2
    Dernier message: 31/01/2006, 09h40
  3. Probleme lors de la compilation...
    Par Draleg dans le forum C
    Réponses: 15
    Dernier message: 08/12/2005, 17h14
  4. [Debutant] probleme lors de la compilation
    Par boobi dans le forum Débuter
    Réponses: 5
    Dernier message: 26/08/2005, 15h57
  5. [MYSQL] Probleme lors de la compilation
    Par Nasky dans le forum Autres éditeurs
    Réponses: 10
    Dernier message: 24/02/2004, 17h04

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