JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=3741e0822dff8e18965f643ee233f3e6Medaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Arrays und nicht-konstante Ausdrücke

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Sören
JLI Master Trainee



Anmeldedatum: 26.07.2002
Beiträge: 647
Wohnort: Bonn
Medaillen: Keine

BeitragVerfasst am: 01.01.2008, 23:28    Titel: Arrays und nicht-konstante Ausdrücke Antworten mit Zitat

Hi,
ich hatte neulich bei ein paar Freunden, die gerade anfangen C++ zu lernen, folgendes gesehen:
Code:
...
int n;
std::cin >> n;
int array[n];
...

Hat mich etwas gewundert, vorallem weil das funktioniert und der Compiler für sowas auch keine Warnung oder Fehler ausgegeben hat. Hatte ein wenig gegooglet, aber auch nur Fragen keine Antworten finden können. Weiß jemand warum das funktioniert?

Frohes neues Jahr!
Sören
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
DirectXer
Dark JLI'ler



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 02.01.2008, 00:01    Titel: Antworten mit Zitat

Hi sören, schön mal wieder was von dir zu hören Very Happy (ui das reimt sich Cool )

Normalerweise darf kein C++ Compiler diesen Ausdruck durchgehen lassen, unter MSVC9 z.B. erhalte ich 3 Errors:
Code:

1>main.cpp(22) : error C2057: expected constant expression
1>main.cpp(22) : error C2466: cannot allocate an array of constant size 0
1>main.cpp(22) : error C2133: 'array' : unknown size


Kann das vielleicht sein dass das nicht der Build war sondern ein vorheriger?

Gruß DXer
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Sören
JLI Master Trainee



Anmeldedatum: 26.07.2002
Beiträge: 647
Wohnort: Bonn
Medaillen: Keine

BeitragVerfasst am: 02.01.2008, 01:33    Titel: Antworten mit Zitat

Mr. Green Cool

Bin mir aber ziemlich sicher dass es kein "toter Build" war.
Habs gerade auch nochmal explizit mit folgendem Programm ausprobiert:
Code:
#include <iostream>

void MyFunc(int n)
{
   int Array[n];
   for(int i=0; i<n; i++)
      Array[i] = i*i;
   for(int i=0; i<n; i++)
      std::cout << Array[i] << std::endl;
}

int main (int argc, char * const argv[])
{
    int num;
   std::cin >> num;
   MyFunc(num);
   
    return 0;
}


Und wie gesagt: Es funktioniert tatsächlich. Habs erst unter XCode und dann mit Dev++ kompiliert und bei beiden nicht einmal Warnungen bekommen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
DirectXer
Dark JLI'ler



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 02.01.2008, 13:01    Titel: Antworten mit Zitat

hmm laut c++ standard dürfte das nicht gehen... (ich bekomme unter msvc9 dieselben Fehlermeldungen wie vorhin) Kann das sein dass du in den Compilereinstellungen etwas besonderes hast? Wie "auto dynamic array allocation" oder so?

Gruß DXer
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Deviloper
Junior JLI'ler



Anmeldedatum: 31.05.2006
Beiträge: 77

Medaillen: Keine

BeitragVerfasst am: 03.01.2008, 01:06    Titel: Antworten mit Zitat

Hmm G++-Erweiterung. Hab DevC++ nicht, aber basiert dieser nicht auch auf G++ (GCC für C++ Wink ) ?

Nutz aber dennoch std::vector odg. um auf allen Compilern die sich nach dem Standard richten gute Ergebnisse zu erhalten!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
LordHoto
JLI'ler


Alter: 34
Anmeldedatum: 27.03.2003
Beiträge: 137
Wohnort: Gelnhausen
Medaillen: Keine

BeitragVerfasst am: 05.01.2008, 02:28    Titel: Antworten mit Zitat

Hmm vllt. kein -pedantic switch? Ich denke g++ wird es auch bei C++ erlauben ohne diesen switch, da es in C99 erlaubt ist.

Jedenfalls sagt g++ mit -pedantic:
Code:

error: ISO C++ forbids variable-size array ‘array’
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Sören
JLI Master Trainee



Anmeldedatum: 26.07.2002
Beiträge: 647
Wohnort: Bonn
Medaillen: Keine

BeitragVerfasst am: 08.01.2008, 01:32    Titel: Antworten mit Zitat

Hatte die letzten Tage wenig Zeit wegen Uni. Werd mich morgen nochmal mit beschäftigen. Würde mal ganz gerne wissen woran's genau liegt. So gesehen ist es mMn eine Farce, dass der Compiler das ohne Warnung akzeptiert, weil so nicht dabei geholfen wird portablen Code zu schreiben. Confused
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
LordHoto
JLI'ler


Alter: 34
Anmeldedatum: 27.03.2003
Beiträge: 137
Wohnort: Gelnhausen
Medaillen: Keine

BeitragVerfasst am: 11.01.2008, 01:12    Titel: Antworten mit Zitat

Ahjo eigentlich jeder compiler schleppt so seine extensions mit, manche mit sprach features andere wiederum mit standard library extensions.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum