Moin,
laut der folgenden Übersicht bietet der gcc ab Version 4.4 Unterstützung für initializer lists. Ich habe folgenden Programmcode für Testzwecke verwendet:
#include <iostream>
#include <initializer_list>
class foo{
public:
foo(std::initializer_list<int> a){
std::initializer_list<int>::iterator it;
for(it = a.begin();it!=a.end();++it){
std::cout<<*it;
}
}
};
int main(){
foo hallo = {1,2,3,4,5,6};
return 0;
}
Und erhalte folgende Fehlermeldung:
test.cpp:7: Fehler: »iterator« is not a member of »std::initializer_list<int>«
Laut dem Working Draft sollte iterator aber sehr wohl ein Element von initializer_list sein. Ist die Implementierung dahingehend im gcc noch unvollständig oder mache ich hier etwas falsch? Ich habe noch einige Beispiele für den Einsatz von initializer_list mit dem gcc gefunden. Diese iterieren aber jeweils über einen const int* über die Elemente der initializer_list, was ich persönlich nicht soo schön fand
.cpp kompiliert er mit dem C++-Compiler und bei dem muss man noch die Runtime linken (wenn man g++ anstelle gcc nutzt, dann wird das automatisch erledigt) und bei .c nutzt er eben den C-Compiler.
Athar schrieb:
Samyboy schrieb:
Also Code::Blocks nimmt das nicht an.
Und wie äußert sich das?
Kompiliert bei mir ganz wunderbar mit dem gcc und Code::Blocks zeigt das auch ganz normal als String an.
Mein Fehler, funktioniert super
Danke! (Ist auch ne schönere Lösung als das \ find ich ^^)
;fricky schrieb:
???!!! schrieb:
Kann man irgendwo eine kostenlose Schülerversion downloaden?
da: http://www.turboexplorer.com/
Embacadero hat die Turbo Versionen schon lange aus dem Netz genommen. Hier gibt es sie noch:
http://www.turbomirror.com/
Ich hab nur keine Ahnung ob du noch den nötigen Lizenzschlüssel bekommst.
Ansonsten kannst du aber auch Lazarus nehmen.
http://lazarus.freepascal.org
Hallo Ruediger,
den Fehler mache ich auch kein zweites Mal mehr.
Diese Version ist für mich vollständig unbrauchbar.
Ich schreibe derzeit an einem Roboter und deren Viso. Da benötige ich unter anderem Remote Debugging und andere nette Funktionen.
Die Neuinstallation bringt es auch nicht, da die entsprechenden Libs im Netz nicht mehr vorhanden sind für KDevelop und Ubuntu.
Jetzt habe ich Codeblock am rennen und es geht auch ganz gut.
Nur das Ubuntu eine derartige Politik mit 1/4 fertiger Software fährt ist mir
ein Rätsel. Bei meinem Versuche in meinem Umfeld die Leute von Windows auf andere Betriebssystem (Linux/ MAC OSX) zu bekommen, war das ein schwerer Rückschlag.
Schliesslich habe ich das erstmal selber hierdurch Schaden genommen, da ich fast zwei Wochen nach meinem Urlaub versucht habe, mein System wieder ans rennen zu bekommen.
Das war jedenfalls nicht so schön.
Viele Grüße
R.
wenn du nur mingw benutzt, gibt du
mingw32-make
in die konsole ein.
du kannst aber auch msys zusätzlich installieren dann reicht es
wenn du einfach nur
make
in die konsole eingibst.
das einzige worauf du achten musst, ist unter windows die umgeungsvariblen
in einem stück einzugeben
name der variable : Path
wert der variable : c:/mingw/bin; c:/mingw/libexec; c:/mingw/msys/bin;
=> jetzt brauchst du einfach nur
make
einzutippen.
hoffe das hat dir geholfen
Dieser Thread wurde von Moderator/in pumuckl aus dem Forum C++ in das Forum Compiler- und IDE-Forum verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?
Dieses Posting wurde automatisch erzeugt.
Templates kann man *nicht* in eine LIB packen, sondern diese *müssen* immer im Header direkt (inline) implementiert werden. Dann brauchst Du auch keinen LIbs mitzuliefern...
Templates werden zur *Compilezeit* erzeugt! Somit kann sie der Compiler nicht schon erzeugen, wenn er sie noch gar nicht kennt... Du kannst auch "template-spezializations" machen, aber das hilft oft auch nicht...
Das ist der Unterschied zu (.NET) "Generics"...
Hi,
ich habe ein iPod Touch und würde gerne ein paar kleine Tests damit machen.
Ebenso würde mich überhaupt interessieren, ob es noch auf meinem alten
PowerBook läuft. Hat als OS 10.1 oder 10.2 . Liegt im Keller.
Leider kann man ja oder "breaken" nicht unter Linux oder anderen OS damit arbeiten.
Mich interessiert also nur die "offizielle Lösung" ?
Hat hier jemand Erfahrung damit gemacht?
Ich würde gerne ein Programm schreiben, welches eine Socketverbindung
mit einem QT Programm aufnimmt. Zwischen QT Programmen kein Problem.
Gruss
also, gdb hab ich aktiviert, vorher wars bei native unter settings-compile-debugging information. da kam auch keine fehlermeldung, kann ich irgendwie erkennen, ob gdb installiert ist?
adminrechte habe ich eigentlich auch, daran sollte es nicht liegen...
Die Option -D habe ich auch gerade gefunden. Danke für den Hinweis mit dem __. Sorry das der Thread im falschen Bereich gelandet ist, aber ich hatte ursprünglich gedacht, dass es ein Problem von C ist.
Ich hab's erst jetzt verstanden. Mit -Wno-swicht geht's auch ohne default. Da hab ich scheinbar irgendwas beim Testen verbockt, ich war mir sicher, das ich das schon probiert hatte.
Icematix schrieb:
Nein, Standard ist __cdecl.
Trotzdem scheint VC++ seinen Dickkopf durchzusetzen und macht eben etwas anderes wenn Register frei sind oä
Naja, dass hängt davon ab mit welchen Einstellungen du kompilierst. Standard-Debug hat jegliche Optimierung abgeschaltet und sollte deine Funktionen auch wirklich so anlegen, wie es deklariert wurde.
Wenn du den Optimizer jedoch angeschaltet hast, wird er natürlich (z.B.) eine Funktion die nur ein einziges Mal mit den Werten X und Y aufgerufen wird; anders gestalten und zwar dann dahingehend, dass die Werte fest eingetragen werden und gar nichts mehr vom Stack geholt wird. Ggf. wird auch die ganze Funktion überhaupt nicht angelegt (da keine Notwendigkeit besteht), sondern inline eingefügt.
Mit welchen Parameter kompilierst du denn?
Hallo,
du musst darauf achten, dass alle Bestandteile deines Projekts mit den gleichen Einstellungen für die Laufzeitbibliothek kompiliert wurden, siehe dazu:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-221374.html
MfG,
Probe-Nutzer
karle_at_nfr schrieb:
1. Was ist wenn die funktion nicht inline ist? gibt es optimizer, die ein fertig gelinktes executable auf byte-code ebene auseinanderpflücken und sowas selbst für nicht-inlienes wegoptimieren?
Stichwort Link Time Code Generation.
2. ich bin davon ausgegangen, dass höhere sprachen normalerweise über den umweg c in maschinencode kompiliert werden. (hat mir mal jemand erzählt, der davon wirklich ne ahnung haben könnte) ist das so?
C ist eine ganz brauchbare Zielsprache mit dem Vorteil, sehr portabel zu sein (im Sinne von: auf vielen Architekturen verfügbar), hat also einige Vorteile gerade für Sprachen in einem experimentellen Stadium. Aber ob es wirklich der Normalfall ist? Es gibt auch C--, oder man benutzt einen fertigen Codegenerator. Aber lies es lieber von den Experten: http://lambda-the-ultimate.org/node/3631
Das ist überhaupt eine sehr interessante Seite, wenn du dich für Compilerbau und Programmiersprachendesign interessierst.
Mindestens sollte man -Wall -Wextra -pedantic-errors -std=c++0x benutzen.
Bei den zusätzlichen Warnings kann ich immer einen Blick in Freundlichs SGE empfehlen:
http://github.com/MrN/spacegameengine/blob/master/CMakeLists.txt
Aber die Liste von abc.w ist auch nicht schlecht.
http://gcc.gnu.org/onlinedocs/gcc-4.4.2/gcc/Warning-Options.html#Warning-Options