return struct = lvalue?
-
Naja "richtig", es gibt hier sowieso keinen mir bekannten Weg, der nicht auf UB hinausläuft...
-
Richtig ist das auch nicht, aber memcpy sollte z.B. kein UB sein. Aber auch nur, weil garantiert wird (nicht vom C++ Standard), dass die beiden structs kompatibel sind.
-
Ich nutze sowieso nur MSVC, wenn es dort kein UB ist, reicht mir das schon. Das WinAPI LEBT ja quasi von casts, es geht einfach nicht ohne.
-
Hi schrieb:
Ich nutze sowieso nur MSVC, wenn es dort kein UB ist, reicht mir das schon. Das WinAPI LEBT ja quasi von casts, es geht einfach nicht ohne.
Nicht wirklich. Höchstens kleine Teile der API, die Sachen machen, die aus C++ Sicht Unsinn sind und eben funktionieren, weil das OS mehr weiß als der Prozess selber.
-
Wenn dir MSVC reicht, mach was du willst. Da funktioniert in der Regel alles, was kompiliert.
-
cooky451 schrieb:
Wenn dir MSVC reicht, mach was du willst. Da funktioniert in der Regel alles, was kompiliert.
Jetzt ist nur die Frage ob das positiv zu bewerten ist.
-
Hmm, wisst ihr denn, ob 1/2 bei MSVC garantiert nicht UB ist?
-
Hi schrieb:
Hmm, wisst ihr denn, ob 1/2 bei MSVC garantiert nicht UB ist?
Was UB ist bestimmt der Sprachstandard. Und wenn der etwas als UB deklariert, du es aber so und so machst weil dein spezieller Compiler das umsetzt wie gewollt, dann nutzt du das spezielle Verhalten deines Compilers aus und es besteht die Möglichkeit, dass ein anderer Compiler das ganz anders macht, und anstatt dem erwarteten Verhalten dir 10 Familienpizzen online bestellt.
-
Tja, zweiter Blick...
-
@Ethon
Ich fragte nach UB bei MSVC. Dachte es wäre klar, wie ich das meine.Hab das gefunden http://msdn.microsoft.com/en-us/library/7zyb9yb4
Das warning bekomme ich bei 1 und 2 (mit /W4). Geht also scheinbar mit MSVC.