[OT] Spielwiese für Hacker und PI (was: was mache ich falsch)
-
der compileraufruf sähe dann so z.b. aus:
g++ foo.cpp -std=c++0xum es mal etwas netter als pi zu formulieren

-
314159265358979 schrieb:
Stell dich bitte nicht dumm. Du sollst das beim Compiler-Aufruf mit angeben.
War schon nett genug

Ich benutz CodeBlocks 10.5, da kann man flags die bei Aufruf mitgegeben werden sollen angeben, da gibt's auch folgendeshave g++ follow the coming c++0x ISO C++ language standard [-std=c++0x]
is aktiviert, war es aber schon vorher bevor ich die Fehlermeldung erhalten hab.
Edit: Ich glaub, dass mit vonwegen der gcc 4.6.1 wär der neuste hast du falsch verstanden. Ich hab gejaht, das ich das Flag aktiviert hab, mich dazu auch gewundert wieso es denn nicht Funkioniert wenn das Standard C++11 ist und der Compiler alle Features enthalten soll.
-
Ahhh ich hab die Lösung
Flag:
-std=gnu++0x
-
lol. das ist nur ein sym drauf
-
fail schrieb:
lol. das ist nur ein sym drauf
Dein Name passt zu dir

Und kannst du auch Deutsch reden ?
Ich hab nix verstehen.
-
Wenn der Code mit -std=gnu++0x kompiliert und mit -std=c++0x nicht, dann kannst du mit großer Wahrscheinlichkeit davon ausgehen, dass er einen Fehler enthält.
Bei deinem ursprünglichen Beispiel hast du std::vector mit std::string verwechselt.
-
Hab ich, und ich habs geändert.
Und nein, ich hab beide Flags.
Und es funktioniert problemlos, so wie es soll.
-
Athar schrieb:
Wenn der Code mit -std=gnu++0x kompiliert und mit -std=c++0x nicht, dann kannst du mit großer Wahrscheinlichkeit davon ausgehen, dass er einen Fehler enthält.
Wie kann der Code Fehler enthalten, wenn er Kompiliert?
-
hast du dir mal die warnungen angeschaut?
-
vario-500 schrieb:
hast du dir mal die warnungen angeschaut?
Es kamen keine.
Der Code hat anstandslos kompiliert.
-
Hacker schrieb:
Wie kann der Code Fehler enthalten, wenn er Kompiliert?
Indem er Dinge enthält, die nicht standardkonform sind (d.h. Fehler im Sinne des Standards), die aber vom Compiler, den du benutzt, geschluckt werden können - was auch immer bei rauskommt.
Oder indem er UB erzeugt - das kompiliert zwar, ist aber trotzdem ein Fehler.
-
pumuckl schrieb:
Hacker schrieb:
Wie kann der Code Fehler enthalten, wenn er Kompiliert?
Indem er Dinge enthält, die nicht standardkonform sind (d.h. Fehler im Sinne des Standards), die aber vom Compiler, den du benutzt, geschluckt werden können - was auch immer bei rauskommt.
Oder indem er UB erzeugt - das kompiliert zwar, ist aber trotzdem ein Fehler.Das bugs Fehler sind, ist mir durchaus klar, mir ging es hier vielmehr um was anderes: wie kann der CODE falsch sein, wenn er kompiliert? Das fertige Programm ist ja dann eine andere "Fehlerebene".
-
Hacker schrieb:
wie kann der CODE falsch sein, wenn er kompiliert? Das fertige Programm ist ja dann eine andere "Fehlerebene".
Aha, toll, Fehlerebene... Ein Mann hat eine total verrückte Krankheit, kein Arzt kann es sich erklären. Gut, seine Eltern waren Geschwister, aber das ist eine andere Fehlerebene...
Wenn der Code undefiniertes Verhalten erzeugt, ist klar wo der Fehler liegt: im Code!!!
-
Hacker schrieb:
Das bugs Fehler sind, ist mir durchaus klar, mir ging es hier vielmehr um was anderes: wie kann der CODE falsch sein, wenn er kompiliert? Das fertige Programm ist ja dann eine andere "Fehlerebene".
int main() { ((void(*)())0)(); return 0; }In welchem Universum bezeichnet man diesen Code als richtig?
-
volkard schrieb:
Hacker schrieb:
Das bugs Fehler sind, ist mir durchaus klar, mir ging es hier vielmehr um was anderes: wie kann der CODE falsch sein, wenn er kompiliert? Das fertige Programm ist ja dann eine andere "Fehlerebene".
int main() { ((void(*)())0)(); return 0; }In welchem Universum bezeichnet man diesen Code als richtig?
Im paralleluniversum, in dem alles verkehrt ist.
Jetzt ohne witz - was genau ist das? Castest du da 0 auf einen funktionszeiger, der auf keine Funktion zeigt und keine Parameter übergeben bekommt? Und diese Funktion wird ausgeführt? Aber, aber...Und das kompiliert wirklich, stürzt aber sofort ab.
Edit: der code ist falsch. Klar ist er das. Ich glaub, ich meinte das falsch. Das Beispiel von mimöschen fand ich aber scheiße.
Edit²: Ich glaub, was ich meinte, war (nachdem ich mir den Thread nochmal angeguckt hab), eher: Wenn der Code compiliert und funktioniert (und zwar genau so wie er soll), was kann dann falsch sein?
-
Hacker schrieb:
Ich glaub, was ich meinte, war (nachdem ich mir den Thread nochmal angeguckt hab)
Das heißt, du hast vor deinem Post etwas gemeint aber etwas anderes geschrieben, dann den Thread nochmal durchgelesen und gemerkt, dass das was du geschrieben hast, sich nicht mit dem gedeckt hast, was du gemeint hast?
Wenn der Code compiliert und funktioniert (und zwar genau so wie er soll), was kann dann falsch sein?
Genau das ist EINE Eigenheit von undefiniertem Verhalten: Es KANN funktionieren, muss aber nicht. Und wenn es tatsächlich funktioniert (trotz UB), heißt das eben noch nicht, dass der Code korrekt war.
-
Mimöschen schrieb:
Hacker schrieb:
Ich glaub, was ich meinte, war (nachdem ich mir den Thread nochmal angeguckt hab)
Das heißt, du hast vor deinem Post etwas gemeint aber etwas anderes geschrieben, dann den Thread nochmal durchgelesen und gemerkt, dass das was du geschrieben hast, sich nicht mit dem gedeckt hast, was du gemeint hast?
Ich drücke mich schlecht aus. Nein. Ich hab nochmal zurückverfolgt, wie die diskussion entstanden ist, nochmal nachgedacht und umformuliert
Mimöschen schrieb:
Wenn der Code compiliert und funktioniert (und zwar genau so wie er soll), was kann dann falsch sein?
Genau das ist EINE Eigenheit von undefiniertem Verhalten: Es KANN funktionieren, muss aber nicht. Und wenn es tatsächlich funktioniert (trotz UB), heißt das eben noch nicht, dass der Code korrekt war.
Und was is mit IB? Gehört das mit in der Code ist falsch?
-
Lassen wir den Scheiß, was ich meinte war Unsinn
