Hallo ich möchte eine stinknormale mudolo Funktiopn anweden in meinem
Code.
Einmal benutzte ich x%8 -> das funktioniert weil ja es imPrinzip nur
eine shift operation ist
nun möchte ich aber x%y berechnen lassen und erfahre, daß ich von gcc
diese zeile mit einem <source line is not available> quitiert bekomme!
Kann mir jemand sagen wo ich die passende Library mit der passenden
Funktion herbekomme oder wie ich sonst das problem lösen kann?
Vielen Dank
Tobias
x%y ist ein korrekter C-Ausdruck, wenn x und y ganzzahlige Datentypen
(also bspw. auch uint8_t) sind. Du brauchst dazu weder ein Header-File
zu includen noch eine spezielle Library einzubinden (libc genügt, die
wird aber automatisch gelinkt).
Der Fehler liegt also außerhalb dieses Ausdrucks.
Was ich damit sagen wollte (und auch vorher schon Rufus), ist, dass du
vielleicht mehr Hilfe bekommst, wenn du etwas mehr als drei Zeichen
von deinem Quellcocde postest, mindestens so viel, dass andere dein
Problem reproduzieren können.
Tobias Eckhardt wrote:
> Einmal benutzte ich x%8 -> das funktioniert weil ja es imPrinzip nur> eine shift operation ist
Nein ist es nicht!
Es ist ein AND:
x%8 == x&7
Peter
Andreas Kaiser wrote:
> Peter Dannegger wrote:>>> Es ist ein AND:>> Wohl wahr, immerhin. Scherzfrage: was ist dann:> (x + 1) % 8
(x + 1) % 8
ist natürlich gleich
(x + 1) AND 7
;)
Ist hier uint8_t, also eindeutig (s.o.). Nur ist die Weisheit von gcc
begrenzt, der weiss nicht dass x+1 nie negativ wird und dividiert hier
unverdrossen per runtime lib.
Ich glaube, der OP hat lediglich ein Problem, dass ihm hier irgendwo
der Optimierer was wegoptimiert hat, sodass er auf dieser Zeile keinen
Brechpunkt setzen kann oder so ähnlich. Der resultierende Code wird
völlig in Ordnung sein und das gewünschte (oder zumindest das
hingeschriebene :) ausführen, es ist nur nicht ganz einfach, das mit
dem Debugger nachzuvollziehen.
Guten Morgen,
da meldet sich der Übeltäter mal wieder!
Das Problem hat sich zum Glück nicht gelöst, aber ich kann es umgehen.
Es lag an Eclipse und GCC.
Sowit wie ich das Verstehe können die mir einfach beim Debuggen dieser
Zeile nicht den Ort zeigen der diese Berechnung genauer beschreibt, ABER
berechnet wie es korrekt und somit ist es kein inhaltlicher Fehler
meinerseits.
Danke für eurer Wissen, das mit dem shiften bei %8 war mir neu.
Eine schöne Restwoche.
Tobi