2. C++ Abend in Düsseldorf
-
phlox81 schrieb:
Artchi schrieb:
Kommt mir fehlerhaft vor:
int n; std::cin >> n; int array[n];
Quelle: http://codenode.de/arrays.html
Das geht m.W. in C++ nicht. Nur in C99. Wirst du wohl new erklären müssen.
Also mit dem MinGW geht das unter Windows :P.
Ja, new hab ich schon erklärt, der Kurs ist nur noch nicht ganz online, und auch fehlen noch einige Kapitel. Aber es soll ja nur ein einstieg seinEs hilft aber nicht beim Einstieg, wenn man Code abtippt, der nicht standardkonform (oder geht das etwa bei C++11?) ist und vermutlich von den meisten C++-Compilern nicht geschluckt wird.
-
Es ist kein C++! Es ist auch m.W. kein C++11. Es ist schlicht und einfach C99, das wahrscheinlich der MinGW nebenbei akzeptiert. Aber C99 muß kein C++ Compiler akzeptieren. Denn wie wir wissen: C++ != C
EDIT: Finde dein Engagement bzgl. C++ Abend aber trotzdem lobenswert!
-
Artchi schrieb:
Es ist kein C++! Es ist auch m.W. kein C++11. Es ist schlicht und einfach C99, das wahrscheinlich der MinGW nebenbei akzeptiert. Aber C99 muß kein C++ Compiler akzeptieren. Denn wie wir wissen: C++ != C
EDIT: Finde dein Engagement bzgl. C++ Abend aber trotzdem lobenswert!
Gut danke für das Feedback, ich werde das dann wohl entsprechend erwähnen das das nur in C99 geht, und nicht C++ Standardkonform ist.
Ja, macht nicht so viel Arbeit wie man denkt, und ich organisier das ja zusammen mit dem Chaosdorf.
-
Ich habe das gerade mal mit MinGW getestet. Und wieder Erwarten funktioniert alles ohne Murren. g++ -Wall -std=c++0x produziert nicht mal eine Warnung. Genau so wie gcc -Wall -std=c89. Finde ich ziemlich heftig ehrlich gesagt, wo gerade dieser Compiler doch sonst bei jeder Kleinigkeit meckert.
-
Folgende Dinge sind mir beim schnell Überblick noch aufgefallen
Abschnitt C++11: Der MSVC ist nicht so weit mit der Umsetzung von C++11 wie GCC oder Clang. Selbst der neuen Version fehlen doch viele schöne Features (Variadic Templates, range-based for, constexpr, etc.). http://wiki.apache.org/stdcxx/C++0xCompilerSupport
Datentypen: Die Werte für die Fließkommazahlen erscheinen mir falsch.
long double
ist zwar nicht genau spezifiziert, aber nicht unbedingt das gleiche wiedouble
. Auf x86 ist es glaube ich oft 80Bit. Aber auf einigen Systemen sogar Quadruple precision. Hier würde ich vielleicht long long erwähnen. Ist zwar C++11 aber bieten eigentlich alle Compiler schon an.@Artchi
Der Code ist ja auch offensichtlich kein C. Ist halt C++ mit einer Compilererweiterung.
-
rüdiger schrieb:
Folgende Dinge sind mir beim schnell Überblick noch aufgefallen
Abschnitt C++11: Der MSVC ist nicht so weit mit der Umsetzung von C++11 wie GCC oder Clang. Selbst der neuen Version fehlen doch viele schöne Features (Variadic Templates, range-based for, constexpr, etc.). http://wiki.apache.org/stdcxx/C++0xCompilerSupport
Datentypen: Die Werte für die Fließkommazahlen erscheinen mir falsch.
long double
ist zwar nicht genau spezifiziert, aber nicht unbedingt das gleiche wiedouble
. Auf x86 ist es glaube ich oft 80Bit. Aber auf einigen Systemen sogar Quadruple precision. Hier würde ich vielleicht long long erwähnen. Ist zwar C++11 aber bieten eigentlich alle Compiler schon an.MSVC/C++11 das weiss ich, ist eines der größten Probleme mit C++11 imho.
Über C++11 und Compiler hatte ich ja das letzte mal schon gesprochen.Datentypen - da muss ich noch mal nach schauen. long long könnte man in der Tat noch erwähnen.
-
rüdiger schrieb:
@Artchi
Der Code ist ja auch offensichtlich kein C. Ist halt C++ mit einer Compilererweiterung.Im Text wird aber behauptet, es sei (Standard-)C++. Das kann man ja so nicht stehen lassen. Die Anfänger dieser Welt werden sich schwarz ärgern, wenn ihr VS Express das nicht schluckt.
Mit einer Erwähnung von C99 und wenigen erweiterten C++-Compilern fände ich es aber in Ordnung.
-
cooky451 schrieb:
Ich habe das gerade mal mit MinGW getestet. Und wieder Erwarten funktioniert alles ohne Murren. g++ -Wall -std=c++0x produziert nicht mal eine Warnung. Genau so wie gcc -Wall -std=c89. Finde ich ziemlich heftig ehrlich gesagt, wo gerade dieser Compiler doch sonst bei jeder Kleinigkeit meckert.
Bei mir (g++ (GCC) 4.6.2) brauche ich -pedantic, dann gibt es auch eine Warning.
./main.cpp:7:11: Warnung: ISO-C++ verbietet Feld »x« variabler Länge [-Wvla]
-
Außerdem sollte es size_t n sein und nicht int n.
pyhax schrieb:
cooky451 schrieb:
Ich habe das gerade mal mit MinGW getestet. Und wieder Erwarten funktioniert alles ohne Murren. g++ -Wall -std=c++0x produziert nicht mal eine Warnung. Genau so wie gcc -Wall -std=c89. Finde ich ziemlich heftig ehrlich gesagt, wo gerade dieser Compiler doch sonst bei jeder Kleinigkeit meckert.
Bei mir (g++ (GCC) 4.6.2) brauche ich -pedantic, dann gibt es auch eine Warning.
./main.cpp:7:11: Warnung: ISO-C++ verbietet Feld »x« variabler Länge [-Wvla]
Mit -pedantic-errors wird daraus dann sogar ein Fehler.
Daher immer mit -Wall -Wextra -std=c++11 -pedantic-errors (bzw. -std=c++0x bei älteren versionen) kompilieren.
-
ich habe noch -Werror und -Weffc++ (nur manchmal, einige Warnings sind davon nicht sinvoll) und -Wno-error=effc++
-
So, morgen findet der C++ Abend im Chaosdorf statt, der Kurs ist noch nicht 100% online, aber der Großteil.
Muss hier und da noch was ergänzen (Bei Datentypen kommt noch ein eigenes Kapitel welches enums, unions und structs anreisst.Schon mal danke für das Feedback, C99 Hinweis und MSVC C++11 ist eingepflegt.