Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » automatische Nummerierung von Variablen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] > 2 < [ 3 ]
010
18.09.2007, 17:02 Uhr
RedEagle




Zitat von ~franzi:
es geht leider nicht richtig,
wenn ich folgende Zeile schreibe kommen Fehlermeldungen

FT_HANDLE ftHandle[numDevs];

Fehler:
Konstanter Ausdruck erwartet
Zuordnung eines Arrays der konstanten Größe 0 nicht möglich.
'ftHandle': Unbekannte Größe

wenn ich anstatt numDevs eine feste Zahl nehme geht es...


In C++ müsste sowas eigentlich gehen. Der Compiler reserviert dann automatisch mit malloc.
Du muss natürlich vorher numDevs mit einem wert Füllen:

C++:
int numDevs=0;
FT_HANDLE ftHanle[numDevs];

geht natürlich nicht.


C++:
int numDevs=0;

numDevs = GetNumDevs(); //bzw die entsprechende Funktion

FT_HANDLE ftHanle[numDevs];

So müsste es gehen

ps.: Die vector-lösungen sind natürlich eleganter
--
MFG RedEagle

Dieser Post wurde am 18.09.2007 um 17:03 Uhr von RedEagle editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
18.09.2007, 17:41 Uhr
0xdeadbeef
Gott
(Operator)


Nein, müsste es nicht. Tut es auch nicht, C++ erlaubt keine Arrays variabler Länge auf dem Stack. Jedenfalls noch nicht. Und malloc benutzt man in C++ sowieso nicht mehr.

C99 erlaubt solche Scherze, der macht das dann wie die BSD-alloca-Funktion, allerdings fußt C++98 auf C89, und da geht das noch nicht. Der nächste C++-Standard wird es wohl erlauben, aber auch da wird das weder mit malloc noch mit new irgendetwas zu tun haben.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
18.09.2007, 19:16 Uhr
Suba Esel



@ xXx & J-jayz-Z:
Hmm, das ist mir jetzt aber peinlich.... allerdings würde ich sagen, wenn ich den Code falsch verstanden habe (auch wenn ich damit sagen will dass das was besonderes ist ), dann wird jemand der sich offenbar mit Vectoren nicht auskennt, ihn noch weniger verstehen.... was genau bringt denn jetzt das
C++:
std::ostream_iterator<std::string>(std::cout, "\n"))
?
Es ist ja offenbar das Ziel von std::copy - aber mehr hab ich nicht verstanden.
Alte Regel - erst denken, dann posten
--
Simon
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
18.09.2007, 21:34 Uhr
öni



könnte man das problem denn nicht auch mit ner klasse lösen? CDevices
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
18.09.2007, 21:36 Uhr
xXx
Devil


www.sgi.com/tech/stl/ostream_iterator.html ... und ... http://de.wikibooks.org/wiki/C++-Programmierung:_Standard_Template_Library#Stream-Iteratoren
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
015
18.09.2007, 22:00 Uhr
RedEagle




Zitat von 0xdeadbeef:
Nein, müsste es nicht. Tut es auch nicht, C++ erlaubt keine Arrays variabler Länge auf dem Stack. Jedenfalls noch nicht. Und malloc benutzt man in C++ sowieso nicht mehr.


Das mit malloc war auch nur geraten

Aber das mit der variablen Länge habe ich getestet:

C++:
#include <iostream>

int main()
{
int x=0;
std::cin >> x;

char y[x];
std::cin >> y;
std::cout << x << ": " << y << std::endl;

return 0;
}


bash:
g++ ./test.cpp -o ./test


Man kann aber auch einen Zeiger auf FT_HANDLE deklarieren, und dann per new zur Laufzeit den Speicher reservieren.

Kann es nicht sein, dass genau das der Compiler automatisch aus dem Code macht??
--
MFG RedEagle

Dieser Post wurde am 18.09.2007 um 22:00 Uhr von RedEagle editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
016
18.09.2007, 22:15 Uhr
0xdeadbeef
Gott
(Operator)



Code:
$ g++ -pedantic foo.cc
foo.cc: In function »int main()«:
foo.cc:8: Fehler: ISO-C++ verbietet Feld »y« variabler Größe


...nur, dass dein Compiler etwas akzeptiert, heißt nicht, dass es auch standardkonform ist.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 18.09.2007 um 22:16 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
017
19.09.2007, 06:53 Uhr
RedEagle



Das wollte ich auch nicht damit ausdrücken.
Ich habe es nur öffters so gemacht, ob es nun Standard ist oder nicht, habe ich nicht geprüft.
--
MFG RedEagle
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
018
19.09.2007, 08:57 Uhr
J-jayz-Z
Perl Crack ala Carte
(Operator)



Zitat von Suba Esel:
@ xXx & J-jayz-Z:
was genau bringt denn jetzt das
C++:
std::ostream_iterator<std::string>(std::cout, "\n"))
?


Ist eigentlich ganz einfach. std::count ist ein stream - und std::copy schiebt einfach nur Werte in einen Stream. Da der stream std::cout mit STDOUT, der Standardausgabe verbunden ist, wird also jeder Wert zwischen vec.begin() und vec.end() (was ja bekanntlich jeder ist) ausgegeben. Das "\n" wird noch ans Ende gehängt. Sieht schöner aus, wie ne for oder while schleife und ist einfacher, wie ne std::for_each schleife
--
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="66756e2d736f66742e6465"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'

Dieser Post wurde am 19.09.2007 um 08:58 Uhr von J-jayz-Z editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
019
19.09.2007, 13:50 Uhr
Suba Esel



Jop, ich habs jetzt verstanden, thx
Mich hatte verwirrt, dass da zwei "Parameter" waren, also (std::cout, "\n").
--
Simon
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 < [ 3 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: