reinterpret_cast<void**>?



  • krümelkacker schrieb:

    Der Code stinkt.

    Na dann erleuchte uns doch mal: der PointVertex in mapIt() ist static, also ist dessen Inhalt auch noch nach verlassen der Funktion gültig, demzufolge enthält m_pVertex auch gültige Daten. Bitte was soll hier also stinken?

    Und void main(int) ist zwar ein wenig eigenwillig aber - wie dir dein Linker verraten wird - absolut zulässig.



  • Donggger schrieb:

    Und void main(int) ist zwar ein wenig eigenwillig aber - wie dir dein Linker verraten wird - absolut zulässig.

    Meiner bemängelt das als Fehler und weißt mich darauf hin, dass kein gültiger Programmeinsprungpunkt gefunden wurde.

    Bzw sowas:
    main.cpp:35:14: error: ‘::main’ must return ‘int’
    main.cpp:35:6: warning: ‘int main(int)’ takes only zero or two arguments [-Wmain]

    Ausserdem wurde schon direkt darauf verwiesen, warum das undefineirt ist: §3.10/15 das hat nichts mit Gültigkeitsbereichen zu tun.



  • otze schrieb:

    Ausserdem wurde schon direkt darauf verwiesen, warum das undefineirt ist: §3.10/15 das hat nichts mit Gültigkeitsbereichen zu tun.

    Toller Hinweis...

    krümelkacker schrieb:

    Da wird undefiniertes Verhalten hervorgerufen (Verletzung von §3.10/15, "strict aliasing").

    Unheimlich hilfreich, wenn sich unter dem angegebenen Link nix zu diesem Paragrafen findet!



  • <2 Sekunden Google Suche liefern dir den korrekten Abschnitt. Ich kann aber verstehen, warum er das undefinierte Verhalten zu Wikipedias Link auf undefiniertes Verhalten verlinkt hat: weil häufig als nächstes die Frage gestellt wird, ob der Code denn nicht doch möglich wäre.



  • otze schrieb:

    <2 Sekunden Google Suche liefern dir den korrekten Abschnitt.

    Ach, tun sie das?

    Die ersten 5 Treffer drehen sich um einen "YouTube to MP3 Converter 3.10.15", dann gibt es einen Link auf ein Wikipedia-PNG, dann kommt noch vier mal das YouTube-Dingens sowie eine Seite zum Thema Vollmachten. Deine zwei Sekunden sind damit um ein vielfaches überschritten.



  • Für deine mangelnden Google-SKills kann ich nicht.

    Wie wärs mit:

    c++ 3.10/15



  • otze schrieb:

    Für deine mangelnden Google-SKills kann ich nicht.

    Wie wärs mit:

    c++ 3.10/15

    Und für deine mangelnden Google-Skills kann ich auch nichts. Scheinbar gehörst du auch zu denen, die zwar gerne schlaumeiern, aber bis heute nicht gelernt haben, dass Google keinen zwei Leuten das exakt identische Suchergenis liefert. Noch nie was davon gehört? Peinlich.



  • Ich verlinkte "undefiniertes Verhalten", weil es ein wichtiger, feststehender Begriff ist, der nicht "überlesen" werden sollte.

    Lad Dir doch mal einen nicht zu verstaubten frei erhältlichen Entwurf des C++ Standards und schau darin nach Abschnitt 3.10 Absatz 15. Die findest Du auf open-std.org. Alternativ kannst Du auch nach "strict aliasing" googeln. Im Wesentlichen darf der Compiler annehmen, dass ein Zeiger vom Typ T* und ein Zeiger vom Typ U*, wenn T und U nicht "genügend verwandt" sind, nicht auf dieselbe Stelle im Speicher zeigen. Basierend auf diese Annahme hat der Optimierer im Compiler mehr Freiheiten. Schreibt man Code, der sich mit dieser Annahme beißt, darf man sich nicht wundern, wenn das Programm nicht das macht, was es soll. Typischerweise tritt dieses "komische" Verhalten dann auf, wenn man die Optimierungsstufe des Compilers ein-/hochschaltet.



  • Donggger schrieb:

    Peinlich.

    ich hab das Ergebnis mit private-browsing getestet. Also keine Cookies, kein sonstiger personal quatsch. Schon vor meinem letzten Post. Einen Signifikanten Unterschied konnte ich nicht feststellen. Der Suchbegriff ist halt exakt genug. Ich gebe dir nicht die Aufgabe selber zu googeln, wenn ich nicht explizit glaube, dass es jeder einfach finden kann.

    Ich erhalte deine Suchergebnisse übrigens auch, wenn ich die guten Tipps in den Wind schlage und nach 3.10.15 suche. In dem Zusammenhang hatte es schon Sinn, dass dir 3.10/15 angegeben wurde. Es sind halt unterschiedliche Dinge.



  • otze schrieb:

    Ich erhalte deine Suchergebnisse übrigens auch, wenn ich die guten Tipps in den Wind schlage und nach 3.10.15 suche. In dem Zusammenhang hatte es schon Sinn, dass dir 3.10/15 angegeben wurde. Es sind halt unterschiedliche Dinge.

    Aha - und wo habe ich geschrieben, dass ich nach 3.10.15 gesucht habe? Versuch' es mal mit "§3.10/15" - das ist nämlich EXAKT das, was im Posting angegeben wurde.



  • Gehirn einschalten Freund Donggger.
    Wenn du mit "§3.10/15" nix findest, dann versuch mal "§3.10/15 aliasing".
    Oder eine von 100 anderen Möglichkeiten die zum Erfolg führen.


Anmelden zum Antworten