|
Startseite | Registrieren | Hilfe | Benutzerliste | Kalender | Suchen | Heutige Beiträge | Alle Foren als gelesen markieren |
Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4. |
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|||
possible use of uninitialized variable
Ich habe ein Verständnisproblem, warum ich die Warnung
"possible use of uninitialized variable 'Factor' " für folgenden Codeaufbau bekomme, und zwar für die rote Zeile: Code:
// head int a; // used everywhere in several functions double FinalVal; // end head Func() { if(Condition) { int Factor; if(Cond1) Factor=2; else if(Cond2) Factor=3; // more code for a and Variable calc FinalVal=NormalizeDouble(a*Variable*Factor,2); } } Danke. AVT |
|
|||
Versuche doch der Variable Faktor einen Erst-Wert zu geben, zB:
PHP-Code:
|
|
|||
Zitat:
Sofern eine Variable keinen "echten" Wert zugewiesen bekommt, "erhält" sie einen undefinierten Standardwert. Einen echten Wert erhält deine Variable aber nur beim Zutreffen einer Bedingung. Wäre da ein "if-else" anstatt "if-else if", so würde deine Variable in jedem Fall einen echten Wert bekommen. Also kurz: Erhält eine Variable nur unter Bedingungen einen Wert, denkt der Compiler sich "die Bedingungen können auch NICHT zutreffen". Eine weitere Nutzung einer solchen Variable lässt den Compiler dann warnen "diese Variable wurde vorher möglicherweise nicht mit einem Wert gefütter..." |
|
|||
Ich danke Euch, Raul0 und next user.
Zitat:
Zitat:
Wer mal die glibc mit allwarnings kompiliert hat, lernt schnell eine Warnung ist eine Warnung und kein Fehler, aber ich hab's lieber ohne Warnungen im strict Modus. AVT |
|
|||
Hi,
mir sind die Unterschiede zwischen Deklaration, Definition, Initialisierung ect. bekannt. Deine Anmerkung passt allerdings nicht zu meinen Sätzen. Du musst diese schon zusammen betrachten. Besonders im ersten Satz von mir "umschreibe" ich da KEINE Deklaration mit einer Initialisierung, aber ist ja auch egal... Geht mir genauso. |
|
|||
Zitat:
Für mich war ursprünglich die Initialisierung mit "int a;" abgeschlossen und nun habe ich als Fazit im Lernspeicher: Achtung ist nicht dasselbe. Speicher kann man auch wieder freigeben, wenn's sein muß ... Schönes Wochenende. AVT |
|
|||
"Speicher kann man auch wieder freigeben, wenn's sein muß ..."
Das ist mir jetzt etwas zu platt. Welchen Speicher meinst Du? Da wir hier die ganze Zeit um die Deklaration und Initialisierung einer Integer-Variablen geschrieben haben, erklärst Du mal bitte die Freigabe konkret daran. Danke. traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
Dynamische Speicherverwaltung: new, delete.
Sollte aber nur mit Klassen gehen. Ein einziges int in eine Klasse packen sollte sich nicht lohnen, die 4Byte müsste der RAM verkraften C$D |
|
|||
Zitat:
traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
Ein global deklariertes int wie hier lässt sich nicht freigeben, ausser wie genannt es befindet sich in einer dynamischen Struktur wie Klasse oder Array...
Mal davon abgesehen, was sollte der Sinn davon sein, warum sollte man ein einzelnes int mit 4Byte freigeben wollen? |
Lesezeichen |
Stichworte |
compiler fehler, error, fehler, mql4, possible use of uninitialized variable, programmierung, programmierung metatrader, programmierung mql4 |
Themen-Optionen | Thema durchsuchen |
Ansicht | |
|
|