Problem mit Optimierung?

Gast #2531924
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.
Gast
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

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.