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 :

Initialisation tableau


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre �m�rite Avatar de reggae
    Profil pro
    Inscrit en
    Ao�t 2005
    Messages
    773
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Ao�t 2005
    Messages : 773
    Par d�faut Initialisation tableau
    Bonjour � tous!
    Je suis saisit d'un GROS DOUTE!
    Vous �tes d'accord qu'il est interdit en C++ de cr�er un tableau � l'aide d'une variable? La taille du tableau devant �tre connue � la compilation...
    Alors pourquoi ce code fonctionne-t-il?
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    #include <iostream>
    int main()
    {
        int x=10;
        int tableau[x];
        tableau[0]=4;
        std::cout<<"Le tableau contient "<<x<<" elements!\n";
        std::cout<<"Premier element: "<<tableau[0]<<" !\n";
        system("pause");
    }
    :

    EDIT: ce code compile sous Mygwin

  2. #2
    R�dacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 45
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Par d�faut
    ce code ne compile pas sur VC6

    test3.cpp(17) : error C2057: expected constant expression
    test3.cpp(17) : error C2466: cannot allocate an array of constant size 0
    test3.cpp(17) : error C2133: 'tableau' : unknown size

  3. #3
    Membre �prouv�
    Homme Profil pro
    D�veloppeur de jeux vid�o
    Inscrit en
    D�cembre 2005
    Messages
    109
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 40
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur de jeux vid�o
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : D�cembre 2005
    Messages : 109
    Par d�faut
    Compile avec mingw/g++ 3.4.2
    Ne compile pas avec vc8 (visual c++ 005 express edition)

    A mon avis c'est un bug du compilateur.
    Je pensais que le compilateur consid�rais x comme constant, jusqu'� l'essai de cette fonction :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    void foo(int a)
    {
    	int tableau[a];
    	tableau[0]=4;
    	std::cout<<"Le tableau contient "<<a<<" elements!\n";
    	std::cout<<"Premier element: "<<tableau[0]<<" !\n";
    }
    Elle compile aussi sous mingw.

    Erreur de visual ou de mingw ?

  4. #4
    R�dacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 45
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Par d�faut
    Citation Envoy� par Volune
    Erreur de visual ou de mingw ?
    de mingw il me semble. la taille d'un tableau TAB[TAILLE] doit �tre une constante (par exemple 10, ou #define TAILLE 10).
    si la taille n'est connue qu'� l'ex�cution (allocation dynamique) alors on doit utiliser les pointeurs
    <mode pr�ventif std::vector ON>
    • je reste dans le cadre d'une non-utilisation de la STL

    <mode pr�ventif std::vector OFF>

  5. #5
    Membre �m�rite Avatar de reggae
    Profil pro
    Inscrit en
    Ao�t 2005
    Messages
    773
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Ao�t 2005
    Messages : 773
    Par d�faut
    Merci
    Je me disais aussi qu'il y avait un gros prob'!!

    Je vais de ce pas essayer le code sous Borland, je vous tiens donc au courant.

  6. #6
    Membre �m�rite Avatar de reggae
    Profil pro
    Inscrit en
    Ao�t 2005
    Messages
    773
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Ao�t 2005
    Messages : 773
    Par d�faut
    Effectivement, ce code ne compile pas sous Borland C++ Builder 6...
    Merci � vous!

  7. #7
    Expert confirm�
    Avatar de Luc Hermitte
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2003
    Messages
    5 296
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : A�ronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Ao�t 2003
    Messages : 5 296
    Par d�faut
    Ton code utilisant un VLA compile parce que tu tu utilises GCC en mode non pedantique. Soit, tu lui dis de supporter ses propres extension/entorses personnelles au standard du C++.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne r�ponds � aucune question technique par le biais de ce m�dia. Et de toutes fa�ons, ma BAL sur dvpz est pleine...

  8. #8
    Membre �m�rite Avatar de reggae
    Profil pro
    Inscrit en
    Ao�t 2005
    Messages
    773
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Ao�t 2005
    Messages : 773
    Par d�faut
    Merci!

  9. #9
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Bref, ce n'est pas un bug de GCC, c'est une feature

    Mais bien �videmment, ce genre d'extension n'est pas normalis�, donc pas portable...
    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.

  10. #10
    Expert confirm�
    Avatar de Luc Hermitte
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2003
    Messages
    5 296
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : A�ronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Ao�t 2003
    Messages : 5 296
    Par d�faut
    Les VLA sont dans le C99 et ne sont pas cens�s �tre support�s en C++ ; n'�tant pas sp�cifi�s dans la norme du C++98. Libre � chaque compilo de permettre des entorses qui, en l'occurence, ne sont pas pr�tes d'�tre int�gr�es au C++ de sit�t.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne r�ponds � aucune question technique par le biais de ce m�dia. Et de toutes fa�ons, ma BAL sur dvpz est pleine...

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�ponses: 7
    Dernier message: 29/01/2009, 12h32
  2. initialisation tableau : error C2099
    Par aymeric__ dans le forum MFC
    R�ponses: 3
    Dernier message: 16/03/2006, 15h22
  3. Initialisation tableau
    Par tutcrubo dans le forum C++
    R�ponses: 4
    Dernier message: 12/01/2006, 23h00
  4. [Debutant] Initialisation tableau []
    Par Pumpkins dans le forum Collection et Stream
    R�ponses: 4
    Dernier message: 15/09/2004, 00h02
  5. Initialisation tableau
    Par poinclin dans le forum Collection et Stream
    R�ponses: 2
    Dernier message: 24/06/2004, 15h39

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