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 :

Erreur lors de la déclaration d'un tableau


Sujet :

C

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 241
    Points : 83
    Points
    83
    Par défaut Erreur lors de la déclaration d'un tableau
    salut, j'ai ça qui marche:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    #define M = 3
    float w[2*M];
    je veux faire ça qui marche pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    #define M = 3
    int M2 = 2*M;
    float w[M2];
    comment je fais?

  2. #2
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #define M = 3
    const int M2 = 2*M;
    float w[M2];
    PS : si ça marche pas c'est qu'il s'est pris les pieds dans ses lacets, regarde la fonction faireSesLacets()

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 241
    Points : 83
    Points
    83
    Par défaut
    ça marche pas, ça se dit marcher!

  4. #4
    Membre éclairé
    Avatar de doudoustephane
    Homme Profil pro
    Gérant
    Inscrit en
    Août 2005
    Messages
    1 129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 129
    Points : 862
    Points
    862
    Par défaut
    Citation Envoyé par petdelascar
    ça marche pas, ça se dit marcher!
    ah non, par contre, ca cours...


    serieusement par contre, pense a mettre le tag ...

  5. #5
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Citation Envoyé par petdelascar
    salut, j'ai ça qui marche:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    #define M = 3
    float w[2*M];
    Qu'entends-tu par marcher?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Comeau C/C++ 4.3.3 (Aug  6 2003 15:13:37) for ONLINE_EVALUATION_BETA1
    Copyright 1988-2003 Comeau Computing.  All rights reserved.
    MODE:strict errors C99 
     
    "ComeauTest.c", line 2: error: expected an expression
      float w[2*M]; 
                ^
     
    "ComeauTest.c", line 2: error: this operator is not allowed in a constant expression
      float w[2*M]; 
                ^
     
    2 errors detected in the compilation of "ComeauTest.c".[FONT=verdana,geneva,lucida,'lucida grande',arial,helvetica,sans-serif]

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 241
    Points : 83
    Points
    83
    Par défaut
    J'entend ça à la compile:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    error C2057: expected constant expression
    error C2466: cannot allocate an array of constant size 0
    qui correspond à:

    float w[M2];

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 241
    Points : 83
    Points
    83
    Par défaut
    Bon, ba ça doit pas se faire, ça ça marche:
    #define M_2 2 * M

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 241
    Points : 83
    Points
    83
    Par défaut
    Suis je bête, ça s'appelle l'allocation dynamique ça.

  9. #9
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut
    Citation Envoyé par petdelascar
    Suis je bête, ça s'appelle l'allocation dynamique ça.
    Plus précisément c'est une nouveauté du C99 : Les tableaux de taille variable

  10. #10
    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 petdelascar
    salut, j'ai ça qui marche:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    #define M = 3
    float w[2*M];
    En admettant que tu veuilles dire
    2*M est une expression constante. OK.
    je veux faire ça qui marche pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    #define M 3
    int M2 = 2*M;
    float w[M2];
    2*M n'est pas une expression constante.Ca pourrait fonctionner en C99 (Variable Length Array ou VLA), mais je ne connais pas de compilateur qui implémente correctement les VLAs.
    comment je fais?
    Comme d'habitude :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    float *w = malloc (sizeof *w * M2);
    avec contrôle et libération...
    Inclure <stdlib.h>

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

Discussions similaires

  1. [WD-2010] VBA - Erreur lors de la modification du style d'un tableau
    Par sunlover dans le forum VBA Word
    Réponses: 1
    Dernier message: 20/05/2011, 12h12
  2. Erreur lors de l'execution d'un script jsp
    Par tuxor dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 06/08/2004, 12h35
  3. Erreur lors de la connexion
    Par mathll65 dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 23/03/2004, 17h46
  4. Erreur lors de modification d'une table
    Par seb.49 dans le forum SQL
    Réponses: 11
    Dernier message: 13/01/2003, 17h16
  5. [VB6] Erreur lors de l'ouverture d'un document Word
    Par Marco le Pouillot dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 03/01/2003, 09h30

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