Ist das legal?
-
Logisch, was meint ihr warum manche Spielehersteller solange brauchen um ein Spiel zu programmieren, die müssen vorher nen eigenen Compiler programmieren, der die Macken des Codes durchgehen lässt.
mfg
Glamdring
-
VC7.1 Std sagt dazu:
typedef int intfn(); intfn blub; // Geht, nur eine Deklaration intfn blub // C2206, typedef darf nicht zur Definition verwendet werden { return 0; }
Ich will hier nicht zu leichtgläubig sein, aber die Fehlerbeschreibung erweckt den Eindruck, das würde aus Konformitätsgründen nicht gehen.
Wenn die Deklaration legal sein sollte, wäre das ein interessantes Idiom, um Typos bei der Überschreibung von virtuellen Funktionen zu umgehen, was mangels override-Keyword ja schnell mal zu Silent Failure führt. (Bei mir nach wie vor der häufigste Fehler, vielleicht bin ich da aber auch alleine.)
-
Fazit: Spieleprogrammierer sind schlechte Programmierer.
-
nein, sie sind nur besonders unübliche.
-
DIESE Spieleprogrammierer sind schlechte Programmierer. Ich glaube nicht, dass in Firmen wie Blizzard auch nur einziger drin hockt, der seinen Job nicht 100%ig checkt.
-
Hallo,
wenn dieser Code das bedeuten soll, was operator void angedeutet hat, dann ist er nach 8.3.5/4 illegal.
-
#include "stdafx.h" #include <iostream.h> typedef void mytype(int a, int b); mytype system_out; int _tmain(int argc, _TCHAR* argv[]) { system_out(1, 2); return 0; } void system_out(int a, int b) { cout << a + b << endl; }
Damit ein Zusammenhang klar wird!
-
OK dann wär das ja geklärt. Unterstützt VC6 das also als Erweiterung?
BTW ist 8.3.5§4 bei meiner Version (N1034, Nov 96) nur ein (nicht zum Thema passendes) Beispiel ohne normativen Text, das Verbot der Definition über ein typedef ist in §6. Wär ja mal eins der seltenen Beispiele in denen man mit einem Draft Schwierigkeiten bekommen kann
-
nach 8.3.5.§7 ist das von Zeus aber ausdrücklich erlaubt.
meinst du jetzt den code vom OP bashar?
-
davie: Nein ich hab mich auf Hume bezogen. Zeus hab ich ignoriert, weil sein Beitrag das Thema nicht weitergebracht hat. Ich mein schon den vom OP (eigentlich von mir im "Civ II" Thread, aber egal
)
-
Aber die Deklaration ist erlaubt? Dann muss ich das echt mal ausprobieren, da kann man beim Überschreiben ja höchstens noch das const vergessen, ohne vom Compiler zurechtgewiesen zu werden...