.| Autor | Beitrag |
|---|---|
|
000 22.04.2002, 17:36 Subcourcer1 |
Kann mir zu der Warnung: "warning C4700: local variable 'x' used without having been initialized" eine Lösung sagen. Wenn ihr den Code braucht, kein Problem, aber ich denke, es ist ein Anfängerfehler :-). -- |
|
Profil || Suche |
|
001 22.04.2002, 17:44 Kriz |
Du verwendest eben eine Variable x, ohne Sie vor dem ersten Benutzen initialisiert zu haben. K:R-I)Z++ |
|
Profil || Suche |
|
002 22.04.2002, 17:51 Archangel |
Kriz, dein code würde die warning "Unreferenzierete lokale Variable" hervorrufen, eine warning "local variable user without having been initialized entsteht bei folgendem code:
also x vor der ausgabe (oder was du sonst damit machst, zB inkrementation etc) auf 0 setzen -- |
|
Profil || Suche |
|
003 22.04.2002, 17:56 Onkel Dittmeyer |
is doch egal, hauptsache ist halt dass er vergessen hat die Variable zu deklarieren. Und er verwendet sie ja anscheinend irgendwo. |
|
Profil || Suche |
|
004 22.04.2002, 17:57 Archangel |
rofl ? thepope, das is absoluter quatsch, er hat die variable vergessen zu initialisieren.. wenn er vergessen hätte, sie zu deklarieren, gäbs einen - achne - "undeclared identifier" error. -- |
|
Profil || Suche |
|
005 22.04.2002, 17:59 Kriz |
@Archangel: Mit fällt gerade auf, daß ich das << x im Stream vergessen habe... Kann ja mal passieren =) Aber Danke für den Hinweis, daß es fehlt. --K:R-I)Z++ |
|
Profil || Suche |
|
006 22.04.2002, 18:23 mani |
oder auch:
sowas is evil -- |
|
Profil || Suche |
|
007 22.04.2002, 19:40 Onkel Dittmeyer |
Ups, verlesen =) Hast recht. -- |
|
Profil || Suche |
|
008 23.04.2002, 17:11 Subcourcer1 |
Gut, jetzt gibt der compiler mir keine Fehlermeldung mehr aus. |
|
Profil || Suche |
|
009 26.04.2002, 15:57 [RMen]OneStone |
georg-wicherski@pixel-house.net | http://www.pixel-house.net/ - Coding Resource| http://www.google.de/ |
|
Profil || Suche |
|
010 26.04.2002, 16:04 Tron |
BAEH!!! 2 saubere loesungen waeren: eventuell auch: bei einem schlauen compiler (lies: gcc) erzeugt 'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams 'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett |
|
Profil || Suche |
|
011 26.04.2002, 18:12 [RMen]OneStone |
Hmm, wer gcc benutzt hat glück.. =) georg-wicherski@pixel-house.net | http://www.pixel-house.net/ - Coding Resource| http://www.google.de/ |
|
Profil || Suche |
|
012 26.04.2002, 19:37 Hellfire |
Ich würde eher sagen, wer gcc benutzt hat i.d.R. Verstand und weiß was er macht. -- Dieser Beitrag wurde am 26.04.2002 um 19:38 von Hellfire bearbeitet. |
|
Profil || Suche |
|
013 26.04.2002, 22:58 Tron |
@Hellfire: ja ... einfach nur ja (; @einsteinersatz: und falls es inline ist, ist sogar m$vc++ so schlau das wegzuoptimieren --'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams 'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett |
|
Profil || Suche |
|
014 27.04.2002, 12:04 Kriz |
Der volle Optimierungsumfang für VC++ wird sowieso erst ab Professional Edition erreicht. Und #define sollte wirklich nur als das benutzt werden, wofür es ursprügnlich mal gedacht war: Als Schalterdirektive und net als Funktionsmakrofizierer oder gar Konstantenersatz. Sowas ist zwar gängig, ist in meinen Augen aber mehr als nur "dirty coded", da alles wegfällt, was Stabilität in einem Programm ausmacht wie nichtvorhandene Typkontrolle oder unvorhersehbares Programmverhalten. Bestes Beispiel: a = ((b++)*(b++)); Und das ist teh Uber-Evil³!!! Und nun sag mir mal, OneStone, wieso das teh Uber-Evil³ ist! >:P --K:R-I)Z++ |
|
Profil || Suche |
|
015 27.04.2002, 15:19 Another1 |
QUAD(d) wird hier so oder so nit funzen, wenn, dann meinst du sicher QUAD(c), was aber auch nit mehr machen wird als nen compiler error. --Another1 ...relaxing..atm =) Dieser Beitrag wurde am 27.04.2002 um 15:19 von Another1 bearbeitet. |
|
Profil || Suche |
|
016 27.04.2002, 22:48 Prefect |
Mit ein bißchen Disziplin ist auch #define durchaus verwendbar :) Übrigens würde ich konstante Variablen nur im äußersten Notfall verwenden (sprich: dann, wenn ich einen Zeiger darauf brauche, also z.B. bei Lookuparrays). Ansonsten nehme ich enum oder eben #define. cu, Widelands - Gemütliche Aufbaustrategie, Free Software |
|
Profil || Suche |
|
017 27.04.2002, 23:22 Tron |
wieso? ein #define wuerde ich NIEMALS als konstante verwenden. #define max 5 oder was anderes #define als konstante zu verwenden ist uberevil, immer const oder enum! #define hat einige sehr genau definierte anwendungsgebiete, zb. als sentry: 'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams 'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett |
|
Profil || Suche |
|
018 28.04.2002, 00:17 Prefect |
Eine andere Verwendung von #define: http://www.rtts.org/source/library.h.html ... unter LObject - SIGNAL/SLOT CAPABLE CLASS ;p Es ist vielleicht so eine kleine Idiotie von mir, aber ich verwende oft #define für Uppercase-Konstanten und enum für Lowercase-Konstanten, aber auch das nicht konsequenzt. Ich denke, auf enum kann man sich einigen ;) Das const wegoptimiert wird ist wohl so... aber ich verwende Variablen dann doch lieber für variables... cu, Widelands - Gemütliche Aufbaustrategie, Free Software |
|
Profil || Suche |
|
019 28.04.2002, 02:37 Kriz |
@Prefi, ich weiß , daß in C Makros gerne verwendet werden, aber es ist manchmal nicht von Vorteil, wenn man Präprozessordirektiven mißbraucht. Als erfahrener Anwender (wie du es bist) weiß man um die Nachteile der Makros. Daher billige ich dir (und Tron und Blair und den Rest der C/++ Mitwisser) uneingeschränkt zu, daß du (ihr) Makros problemlos verwendet. Aber nach den SWT-Richtlinien sind Makros in C/++ nur in äußersten Notfällen einzusetzen. =) Moderne und gefällige Programme sollten (!) stabil laufen und soweit wie möglich irgendwelche Komplikationen aus dem Weg gehen, d.h. Makros nur dann verwenden, wenn Sicherheit gewährt wird =) Ich bei Siemens-VDO kann es mir beispielsweise nicht leisten, unstabilen Code abzuliefern... @Another1: Das Beispiel mit QUAD(d) resultiert aus der Fehlerbehaftung mit Makros. Angenommen, jemand verwendet eine Library (DLL), in der das Makro QUAD() vorkommt. Aus irgendeiner "Dummheit" heraus aber verwendet er das Makro QUAD() mit einem String. Dann könnte je nach Codestruktur die Fehlersuche erheblich eingeschränkt sein! Und ja, es war ein Tippfehler. Ich meinte QUAD(c) =) @Tron: Ich verwende #define wirklich nur als Headersperre, um redundante Headereinbindung zu verhindern oder um fundamentale Definitionen zu erleichtern (ich weiß, daß ich damit mich selber irgendwo belaste, aber manchmal muß man eben ein X für ein V vormachen =) Den Zwiespalt zwischen Code und Quelltext sollte man nur dann explizit verwenden, wenn man absolut sicher ist, was man tut. Ich respektiere Prefis Codeerfahrung und alle anderen Erfahrungen der jeweiligen C/++ Coder. Ich vertraue dagegen meistens den Richtlinien, nachdem sich die internationale SWT-Norm nach richtet. Wenn ich allerdings ehrlich zu mir selber bin, dann möchte ich behaupten, daß Insidercoding manchmal (!) besser ist als Vorschriftscoding... In diiesem Sinne... --K:R-I)Z++ Dieser Beitrag wurde am 28.04.2002 um 02:38 von Kriz bearbeitet. |
|
Profil || Suche |
|
020 28.04.2002, 09:14 Tron |
warum verwendest du das makro NULL? 'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams 'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett |
|
Profil || Suche |
|
021 28.04.2002, 12:21 Kriz |
NULL ist in den Standardlibs eh immer vordefiniert, also von daher =) Hey, OneStone, was is nu? Ich warte auf eine Antwort. --K:R-I)Z++ Dieser Beitrag wurde am 28.04.2002 um 12:22 von Kriz bearbeitet. |
|
Profil || Suche |
|
022 29.04.2002, 01:27 Another1 |
naja, ok, blöder konter, aber wenn du max als #define und max2 als const benutzt kommt der gleiche Fehler (abgesehen davon, dass wohl fast niemand const und #define abwechselnd für so ziemlich das gleiche benutzt (in dem fall max und max2)) : #define max 5 Another1 ...relaxing..atm =) |
|
Profil || Suche |

