Sascha 'saigkill' Manns wrote:
c_geometry.cpp:712: warning: 'delz' may be used uninitialized
Das sagt der Compiler, wenn im Code nicht direkt zu erkennen ist, ob die betreffende Variable initialisiert wird bevor sie genutzt wird.
Wie kann ich delz initialisieren? #include <delz>?
Uh, vielleicht solltest Du doch einmal etwas Programmieren lernen. Nichts fuer ungut und Dein Engagement in allen Ehren, ich bekomme allerdings immer Bauchweh, wenn ich solche Fragen von Leuten sehe, die ganz offiziell Pakete fuer openSUSE via Buildservice bauen. delz ist eine Variable im Code. Die Variable wird an einer Stelle im Code benutzt und der Compiler kann nicht genau erkennen, ob dieser Variablen vorher ein Wert zugewiesen wurde. Falls das nicht geschah bis zu dem Zeitpunk der Verwendung der Variablen ist diese Variable offensichtlich uninitialisiert und liefert (das ist aber compilerabhaengig) i.d.R. eine Zufallszahl - Zufallszahl heisst hier, Du bekommst schlicht das, was zufaelligerweise gerade an der Speicheradresse der uninitialisierten Variablen steht. Du bekommst nicht das, was der Programmierer urspruenglich mal angedacht hat. Je nachdem, was auf die Benutzung der uninitialisierten Variablen folgt, kann das Programm abstuerzen, falsche Ergebnisse liefern, oder auch zufaelligerweise richtige Ergebnisse liefern oder Ergebnisse, die zumindest plausibel aussehen. Tools wie valgrind checken jeden Speicherzugriff zur Laufzeit und entdecken relativ leicht uninitialisierte Variablen. Allerdings erhoeht sich die Laufzeit des Programms drastisch. Fuer Entwicklung und Debuggen von Programmen ist valgrind (oder insure++ etc) aber IMO unverzichtbar. Der Compiler kann manchmal schon beim Compilieren entdecken, ob eine Variable uninitialisiert ist. Oftmals aber nicht mit absoluter Sicherheit. Deswegen heisst es "may be used uninitialized" (falls der Compiler sicher ist, heisst es "is used uninitialized"). Das Problem tritt z.B. auf, wenn eine Variable unter Bedingungen (d.h. in einem if-statement) initialisiert wird. Das muss nicht zwangsweise xur Folge haben, dass die Variable spaeter uninitialisiert verwendet wird (der Programmierer mag wissen, ob das der Fall ist oder nicht), aber es besteht die Moeglichkeit. Siehe das gcc Manual fuer Beispiele, suche nach -Wuninitialized. In anderen Worten, die Warnung des Compilers kann muss aber nicht auf einen Bug hindeuten. Um auf Dein Problem zurueckzukommen: Man kann die Warnung abstellen, in dem man delz schon bei der Deklaration einen Wert zuweist. Allerdings muss man den Code und das Problem verstehen, um Variablen korrekt zu initialisieren, nicht immer ist Initialisieren mit 0 oder 0.0 korrekt. Wenn man Bugs finden will, hilft es manchmal auch, alle Variablen mit sehr seltsamen Werten zu initialisieren, da es die Wahrscheinlichkeit von Problemen zur Laufzeit erhoeht und man so einfacher Bugs finden kann. Manche Compiler (wie z.B. der von Intel) koennen das automatisch erledigen (zumindest in Fortran, bei C/C++ weiss ich das gerade nicht). Hope this helps, Thomson -- To unsubscribe, e-mail: opensuse-programming-de+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-programming-de+help@opensuse.org