Hallo, ich bastl gerade unter Kubuntu 11.10 und aktuellem gcc mittels Eclipse_CDT an einem kleinen Programm. Ich lese eine Textdatei mittels fgets() aus. In meinen Textdateien steht in der ersten Zeile immer eine Zahl, danach folgen in den restlichen Zeilen irgendwelche Daten. Da ich die Zahl extra brauche lese ich diese aus und speichere sie ab, die restlichen Zeilen lese ich in einer while-Schleife aus. So lese ich meine Zahl aus: count = atoi(fgets(lineBuffer, 4, file)+2); Da ich count momentan zwar speichere, aber noch nicht weiter verwende optimiert mir der gcc die Zeile (wahrscheinlich) weg. Das führt dazu dass ich in meiner Schleife später dieselbe Zeile "nochmal" auslese. Schreibe ich stattdessen: count = atoi(fgets(lineBuffer, 4, file)+2); printf("%d", count); funktioniert alles prima. count wird benutzt, deswegen darf gcc nichts optimieren. Ich will aber nicht dass er mir diese Zeile streicht! In Eclipse hab ich unter Properties/c_c++_build/setting/gcc_compiler/optimization bereits auf "none" (-O0) gestellt. Bringt leider nichts. Ohne die printf-Zeile bekomm ich diese Zeile immer in meiner Schleife ausgelesen, was nur bedeuten kann dass der Compiler hier immer noch was optimiert. Habt ihr da ne Idee? Viele Grüße, lugge
lugge schrieb: > Habt ihr da ne Idee? Schreibs nicht gar so dicht gedrängt fgets(lineBuffer, 4, file); count = atoi( lineBuffer ) + 2; das gibt dir dann auch Gelegenheit, den Returncode von fgets zu testen. Ansonsten: Zeig mehr Code. Der Compiler darf den Funktionsaufruf nicht wegoptimieren. Möglich, dass der Optimizer da einen Fehler hat, aber so recht glaub ich da nicht daran.
Sorry für den falschen Alarm, das Problem hat sich erledigt, er hat nichts wegoptimiert. An was genau lag weis ich nicht, aber das spiel ich grad durch. Der gcc war auf Jeden unschuldig :-) Grüße, lugge
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.