Aussehen
Suche Einloggen
[c] [meta] [fefe] [erp]

5412 Ergebnisse

[0] ... [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] ... [270]
  • [l] Felix Thu, 22 May 2025 06:52:47 GMT Nr. 156892
    Am Ende ist das so ein Emo-Move, untertauchen für ein paar Tage um zu gucken, wie vielen Leuten das auffällt, um sich dadran dann aufzugeilen und wichtig zu fühlen!
  • [l] Felix Thu, 22 May 2025 01:10:20 GMT Nr. 156890
    JPG 640×480 60.5k
    Was hat Felix zuletzt gespeichert? Pfostiert es hier. Bild relatiert.
  • [l] Felix Thu, 22 May 2025 00:41:32 GMT Nr. 156889
    JPG 1980×1080 564.1k
    >>156883
    >Das "Arrays von Zeigern" im Kot vorkommen, und auch mal ein Zeiger/Referenz darauf rumgereicht wird, kommt Felixens Meinung schon häufiger in OOP-Kot vor. In C++ dann nur eben als std::vector.
    >dann kriegt DoSomething ein Zeiger-Array übergeben. Ist auch wenig überraschend, schließlich kann diese Methode über das Zeiger-Array iterieren.
    >Felix hält obige Kot-Abschnitte für durchaus öfters in C++-OOP-Kot anzutreffend.
    Ich hatte geschrieben, dass das in meinem Code so gut wie nie vorkommt, nicht in irgendwelchem Ranzkot. Natürlich ist Ranzkot voll mit sowas. Erklärt sich von selbst. Deswegen ist es ja auch Ranzkot.
  • [l] Felix Wed, 21 May 2025 23:48:36 GMT Nr. 156887
    >This basically applies to all code that does things like if I understand correctly.
    >
    >> SomeObject *obj = ...;
    >> ParentObject *parent = PARENT_OBJECT(obj);
    >>
    >> obj->foo = 123;
    >> parent->foo = 456;
    >> some_method(obj) // might see parent->foo == 456 or not

    Der entscheidende Teil hier ist
    <if I understand correctly

    Klingt alles nach FUD. Und die Gnome-Entwickler sind auch nicht allwissend. Felix weiß das, weil er schon mit ein paar davon zu tun hatte. Auf deren Bugtrackern kann man sehr viel Unsinn und Halbwissen lesen manchmal. Das ist ungefähr so wertvoll als Quelle wie ein Kommentar auf /fefe/.

    >https://bugzilla.gnome.org/show_bug.cgi?id=769183#c3
    >Und dementsprechend gab es "Use -fno-strict-aliasing for everything".

    Keine Ahnung, aber
    pkg-config --cflags glib-2.0
    -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/sysprof-6 -pthread
    

    Sehe dort zumindest kein -fno-strict-aliasing.

    Und bei dem ursprünglichen Link mit Cocoa [0] dort ging es um was völlig anderes. Apfel hat diese Eigenart, dass sie Typen wie CGRect und NSRect in mehreren Headern definieren, jeweils als komplett eigene Definition, aber eigentlich identisch. Das ist auch wieder nicht das, was ich meinte. Da gibt es kein Struct, das von einem anderen "erbt". Das sind Parallelstrukturen, die zufällig die gleiche Struktur haben. Die sind nicht miteinander verwandt. Zwischen denen zu casten ist in der Tat potentiell gefährlich. Nochmal: Das ist was völlig anderes, und da greift die Klausel, an die ich mich zu erinnern meine, aus dem C-Standard auch nicht.

    Der Gnom-Entwickler da hat einfach nur den gleichen Denkfehler gemacht wie du.

    [0] https://www.cocoawithlove.com/2008/04/using-pointers-to-recast-in-c-is-bad.html
  • [l] Felix Wed, 21 May 2025 23:36:02 GMT Nr. 156886 SÄGE
    <Liskov-Substitutions-Prinzip
    Spätestens hier hört Felix auf zu lesen. Jeder, der diesen Ausdruck verwendet, hat sich bisher als absoluter Oberdepp erwiesen.
  • [l] Felix Wed, 21 May 2025 23:33:25 GMT Nr. 156884
    >>156883
    >Damit hätte man zwei Zeiger unterschiedlichen Typs auf das gleiche Objekt, und das riecht für Felix nach einem Verstoß gegen die strict-aliasing-Rule.
    Das ist doch Schwachsinn. Wenn man das weiterdenkt, dann dürftest du auch niemals einen Zeiger auf Element eines Structs nehmen oder eines Arrays.

    struct Parent {
      int field1;
    };
    
    struct Child {
      struct Parent parent;
      int field2;
    }
    
    int main()
    {
      struct Child child;
      //struct Parent *parent = (struct Parent*)&child;
      struct Parent *parent = &child.parent; 
    }
    


    Was soll da der Unterschied sein? Es wäre halt einfach nur nervig, wenn du jedes mal &x.parent schreiben müsstest, vor allem, wenn du mehrere Hierarchiestufen überspringen musst. &x.parent.parent.parent.parent...
  • [l] Felix Wed, 21 May 2025 23:12:11 GMT Nr. 156883
    >>156740
    >Es geht hier aber nicht um "layout-compatible" sondern um den Fall, dass man ein struct auf seinen ersten Member casten darf (beides Pointer natürlich).
    Damit hätte man zwei Zeiger unterschiedlichen Typs auf das gleiche Objekt, und das riecht für Felix nach einem Verstoß gegen die strict-aliasing-Rule.

    Felix hat von einem GNOME-Entwickler gefunden (aus dem Jahre 2018):
    >There's too much code, when using GObject, that does not follow the strict aliasing rules.
    https://bugzilla.gnome.org/show_bug.cgi?id=769183#c3

    Und dementsprechend gab es "Use -fno-strict-aliasing for everything".

    >>156741
    >Ich habe nicht gesagt, dass es nie vorkommt, sondern fast nie.
    Das "Arrays von Zeigern" im Kot vorkommen, und auch mal ein Zeiger/Referenz darauf rumgereicht wird, kommt Felixens Meinung schon häufiger in OOP-Kot vor. In C++ dann nur eben als std::vector. Letzteres sieht man an API-Grenzen weniger, weil C++/STL für Modul-übergreifende Parameterübergabe denkbar ungeeignet ist, weil die kleinste Änderung an der STL die ABI-Stabilität karpott macht, und man daher dazu konvergiert ist, keine C++-API mit STL und STL-Containern anzubieten, insbesondere auf Windows. Die üblichen Alternativen sind eigene Container in der Bibliothek zu implementieren (hallo QList<T>) oder Header-only-Bilbiotheken, die direkt mitkompiliert werden.

    Wenn man sich normalen C++-OOP-Kot anschaut, kann man das zu Zeiger-Arrays gesagte mal wie folgt transferieren:

    Schritt 1: Ein Zeiger-Array und ein std::vector<Typ *> ist von der Datenstruktur her hier äquivalent (aber bzgl. der Sprache nicht, siehe unten).
    Schritt 2: Ob das nun ein Zeiger oder ein Schlau-Zeiger ist, ist hier äquivalent.
    Schritt 3: Einen std::vector direkt zu übergeben, oder indirekt als Teil eines structs oder einer class zu übergeben, ist hier äquivalent.
    Schritt 4: Methoden kriegen einen this-Zeiger übergeben.

    Ergebnis: Wenn man Kot hat wie

    class MyClass
    {
    	std::vector<std::unique_ptr<Base>> v;
    
    public:
    	void DoSomething()
    	{
    		for(auto & i : v)
    			i->DoSomething();
    	}
    };


    dann kriegt DoSomething ein Zeiger-Array übergeben. Ist auch wenig überraschend, schließlich kann diese Methode über das Zeiger-Array iterieren.
    Das ganze kann man auch umgekehrt machen:

    class MyClass
    {
    	Base * b;
    
    public:
    	void DoSomething()
    	{
    		b->DoSomething();
    	}
    };
    
    void f(std::vector<MyClass> & v)
    {
    	for(auto & i : v)
    		i.DoSomething();
    }


    Es gibt dann in beiden Fällen Zeiger-Arrays, die ggf. über Umwege an Funktionen übergeben werden. Felix hält obige Kot-Abschnitte für durchaus öfters in C++-OOP-Kot anzutreffend.

    Und damit kommt nun Felix zum entscheidenden Unterschied, warum ein Zeiger-Array und std::vector<Typ *> eben nur von der Datenstruktur her äquivalent sind (zumindest in Bezug auf den Array-Teil), aber in einem ganz entscheidenden Punkt in der Sprache nicht: In C++ sind std::vector<Base *> und std::vector<Derived *> vollkommen unabhängige Typen, die nichts miteinander zu tun haben. Man kann vom einen vector-Typ nicht zum anderen vector-Typ konvertieren, weder implizit noch durch simplen Cast.
    Vollständigen Text anzeigen
  • [l] Niemand Wed, 21 May 2025 22:31:41 GMT
    Beitrag hat niemals nie nicht existiert
  • [l] Felix Wed, 21 May 2025 21:11:24 GMT Nr. 156881
    Was, wenn sie noch heimlich analogen Funk haben?
    Was, wenn sie darüber was vorbereiten?
    Was, wenn sie nur vorgeben, keine Kontrolle über digitalen Funk / digitale Infrastruktur zu haben?
    dfwk Amateurfunk, also auf, Amateurfunk lernen!
  • [l] Felix Wed, 21 May 2025 21:01:44 GMT Nr. 156880
    >>156879
    Schon klar, Expektationen sind super, Felix expeted auch immer viel ... und es ist klar, dass es auch ein paar Leute gibt, die gegen den Faschismus sind (lol) und auch gerne was hacken - allerdings wirft das die Frage auf, warum die "Rechten" nix hacken. Hacker san doch allewo. Vielleicht beschweren sie sich lieber. Arbeitsteilung?!
  • [l] Felix Wed, 21 May 2025 20:11:26 GMT Nr. 156879
    >>156874
    >welches Anonümus
    We are anomalous. We are a region. Forgive and forget. Expecto patronum.
  • [l] Felix Wed, 21 May 2025 20:10:39 GMT Nr. 156877
    PNG 381×364 88.8k
    Der Hecker Anonymous ist schon vor 15 Jahren zur NSA übergelaufen.
  • [l] Felix Wed, 21 May 2025 19:59:02 GMT Nr. 156875
    >>156873
    Geliefert wie bestellt.
  • [l] Felix Wed, 21 May 2025 19:55:00 GMT Nr. 156874
    >“Anonymous has decided to enforce the Judge's order since you and your sycophant staff ignore lawful orders that go against your fascist plans,”


    Ist klar, welches Anonümus ist das immer, auf jeden Fall nicht das, was man vom normalen Bilderbrettgebrauch kennt. Oder hat Felix irgendwas verlauert? Jeder normale Bilderbrettnutzer ist für Deportationen.
  • [l] Felix Wed, 21 May 2025 19:25:42 GMT Nr. 156873
    Vielleicht wurde er in Berlin nieder gemessert. Das ist ja inzwischen nicht mehr so ungewöhnlich in dem Drecksloch.
  • [l] Felix ☎️ Wed, 21 May 2025 18:45:18 GMT Nr. 156872
    JPG 1080×1088 136.3k
    >>156852

    €ywhat, bist du es?
    Grüße an dich und Lina :3


[0] ... [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] ... [270]
[c] [meta] [fefe] [erp]