Hallo ich habe ein Program wo ich einen kleinen Befehl in die main.c
datei hinzugefügt habe und zwar den Befehl:
lcd_clrscr();
print_rc5(code_input);
Jetzt bekomme ich beim compilieren die Fehlermeldung
undefined reference to 'print_rc5'
Was mache ich falsch?Bitte verständlich erklären da ich keine guten
Programmierkenntnisse habe
Zwar gebe ich dir jetzt keine Antwort auf deine Frage, aber such mal
nach "undefined reference" hier im Forum. Du bist nicht der erste der
dieses Problem hat! Das bringt dich sicher weiter, auch wenn es etwas
lesearbeit ist.
Wieso??? schrieb:>> lcd_clrscr();> print_rc5(code_input);>> Jetzt bekomme ich beim compilieren die Fehlermeldung>> undefined reference to 'print_rc5'
undefined reference ist eine Fehlermeldung vom Linker, der die Aufgabe
hat, aus den Einzelteilen das komplette Programm zusammenzubauen.
Und sie besagt, dass der Linker in den Teilen, die du ihm zum
Zusammenbau gegeben hast, keine Implementierung für print_rc5 gefunden
hat.
Ist ein bischen so, wie wenn du beim IKEA am Tresen stehst und dich
beschwerst, dass das Drehelement aus der Anleitung nicht in der Packung
war: undefined Reference zu Drehelement.
Und der freundliche Herr erklärt dir, dass du die 2te Schachtel aus dem
Regal auch noch hättest mitnehmen müssen.
Hallo ich bins nochmal,
Also ich glaube ich weiß woran es liegt und zwar habe ich ja einfach den
Befehl in die main.C eingefügt.Aber ich habe diese funktion garnicht
definiert.Kennt ihr vielleicht eine Seite wo mir erklärt wird wie ich
funktionen definiere?Weil ich habe jetzt einfach mal in die Header Datei
main.h die funktion print eingefügt mit dem argument (void) was ja für
mich nicht richtig ist weil ich ja den RC5 code ausgeben möchte.
ok, der Ansatz war schonmal nicht schlecht.
Die Funktion sollte, bevor du sie im c-file (.c) aufrufst, in einer
header Datei (.h) stehen mit allen Parametern die sie so erwartet.
Die Suchbegriffe sind Deklaration (angeben wie sie von außen aussieht)
und Definition (was dann drinnen passiert)
Woher kommt die Idee gerade die Funktion print_rc5 zu verwenden? Dort wo
die Funktion herkommt findet sich bestimmt eine Deklaration.
Die Idee ist mir gekommen weil ich eine Schaltung habe die uber einen
TSOP gesteuert wird und den RC5 code benutzt.Daran ist ein LCD
angeschlossen was mir sobiso schon Werte eines SHT11 anzeigt.Weil meine
Fernbedienung nicht so toll das RC5 sendet dachte ich mir lass ich mir
den RC5 code anzeigen sodas ich die RC5 datei anpassen kann damit ich
die Schaltung endlich richtig steuern kann
Wieso??? schrieb:> Hallo ich bins nochmal,>> Also ich glaube ich weiß woran es liegt und zwar habe ich ja einfach den> Befehl in die main.C eingefügt.Aber ich habe diese funktion garnicht> definiert.Kennt ihr vielleicht eine Seite wo mir erklärt wird wie ich> funktionen definiere?Weil ich habe jetzt einfach mal in die Header Datei> main.h die funktion print eingefügt mit dem argument (void) was ja für> mich nicht richtig ist weil ich ja den RC5 code ausgeben möchte.
Na ja, irgendwo muss ja die Funktion
print_rc5(code_input);
herkommen. Sprich: Irgendwer muss sie ja einmal geschrieben haben.
Wie kommst du denn auf die Idee, dass es diese Funktion gibt, dass sie
genau so heißt und das sie diese Argumente nimmt. So etwas saugt man
sich ja nicht einfach aus den Fingern.
Wieso??? schrieb:> Der Ersteller des Programms hat mich darauf hingewissen
Schön.
Und kannst du eine entsprechende Funktion in dem was der Ersteller
geschrieben hat finden?
Nein deswegen muss ich das ja selber irgendwie hinkriegen.Ich muss
irgendwie es schaffen den RC5 Code der ja sobiso schon im Programm code
benutzt wird in die Print funktion einzufügen
Wieso??? schrieb:> Nein deswegen muss ich das ja selber irgendwie hinkriegen.Ich muss> irgendwie es schaffen den RC5 Code der ja sobiso schon im Programm code> benutzt wird in die Print funktion einzufügen
Aus deinem Gebrabbel wird keiner wirklich schlau.
Hast du nun eine Funktion print_rc5 oder hast du sie nicht?
Wenn nicht, was hindert dich daran, eine zu schreiben?
print_rc5 klingt jetzt erst mal nicht gerade nach komplizierter
Raketentechnik.
Nein habe die Funktion nicht!!!
Ich möchte ja eine funktion schreiben habe ich auch getan aber ich weiß
nicht wie ich der Funktion sage das sie den RC5 code verwenden soll
Wieso??? schrieb:> Nein habe die Funktion nicht!!!>> Ich möchte ja eine funktion schreiben habe ich auch getan aber ich weiß> nicht wie ich der Funktion sage das sie den RC5 code verwenden soll
Hast du doch schon
print_rc5(code_input);
Jetzt muss nur noch in der Funktion Code rein, der mit dem übergebenen
etwas anfangen kann. Ich geh mal davon aus, dass code_input einfach nur
1 Byte ist (du zeigst ja keinen Code, aus dem man wenigstens mal
irgendwas entnehmen könnte). Also lass dir doch ganz einfach mal dieses
1 Byte auf deinem LCD ausgeben. Da stehen dann Zahlen auf dem LCD. Dann
drückst du auf deiner Fernsteuerung Tasten und schaust dir an, welche
Zahlen kommen. Und daruas ziehst du dann deine Schlüsse, wie du die
print_rc5 Funktion aufbohren willst, damit auf deinem LCD auch wirklich
'Lauter' steht, wenn du auf die Lauter Taste drückst.
(Oder was auch immer du dir vorstellst, was dann auf dem LCD auftauchen
soll)
RC5 Code sind erst mal einfach nur Zahlen! Lass sie dir ausgeben und
sieh nach welche Zahl welcher Taste entspricht, wenn du was anderes als
diese Zahlen auf der Anzeige haben willst.
Abgesehen davon:
Kauf dir ein C-Buch und fang an C zu lernen.
Karl heinz Buchegger schrieb:> Wie kommst du denn auf die Idee, dass es diese Funktion gibt, dass sie> genau so heißt und das sie diese Argumente nimmt. So etwas saugt man> sich ja nicht einfach aus den Fingern.
Das ist der BASCOM- bzw. Bauklötzchenprogrammierungs-Virus...
> Ist ein bischen so, wie wenn du beim IKEA am Tresen stehst und dich> beschwerst, dass das Drehelement aus der Anleitung nicht in der Packung> war: undefined Reference zu Drehelement.> Und der freundliche Herr erklärt dir, dass du die 2te Schachtel aus dem> Regal auch noch hättest mitnehmen müssen.
Der Vergleich ist GENIAL! Du solltest deine ganzen Beiträge hier im
Forum mal zu einem Buch linken ähhh.... zusammenpacken, "C mit
Alltagssprache verständlich erklärt" ;-)
Wieso??? schrieb:> Hier der Teil aus main.c>> while(1) // main loop> {>> if (new_rc5_data())> {> code_input = get_rc5_code(); // read two bytes from interrupt !
und haben diese beiden bytes auch einen Datentyp?
> Ich bin zu blöd krieg es nicht hin.
Wie gibst du denn woanders Zahlen aufs LCD aus?
Du hast doch, wenn ich das richtig verstanden habe, eine Funktion die
SHT11 Codes ausgeben kann. An der kannst du dich erst mal orientieren,
wie man Dinge am LCD ausgibt. Alles was du fürs erste brauchst, sind
HEX-Zahlen am LCD. Das ist nun wirklich pipifax, weil sprintf die ganze
Arbeit macht sofern keine andere Funktion dafür im Programm vorhanden
ist.
Im Übrigen: Verzeih aber etwas am LCD auszugeben, wenn das LCD
grundsätzlich schon läuft ist eine Anfängrübung. Das musst du alleine
hinkriegen. Genauso wie eine Funktion schreiben.
So hat das alles keinen Sinn. Ohne entsprechende Grundlagen ist es
sinnlos, da noch weiter zu machen. Wer mit einem Schraubenzieher nicht
umgehen kann, sollte nicht einen Benzinmotor auf Diesel umzubauen
versuchen.
Karl heinz Buchegger schrieb:> So hat das alles keinen Sinn. Ohne entsprechende Grundlagen ist es> sinnlos, da noch weiter zu machen. Wer mit einem Schraubenzieher nicht> umgehen kann, sollte nicht einen Benzinmotor auf Diesel umzubauen> versuchen.
Hausaufgaben...
abc schrieb:> Karl heinz Buchegger schrieb:>> So hat das alles keinen Sinn. Ohne entsprechende Grundlagen ist es>> sinnlos, da noch weiter zu machen. Wer mit einem Schraubenzieher nicht>> umgehen kann, sollte nicht einen Benzinmotor auf Diesel umzubauen>> versuchen.>> Hausaufgaben...
Glaub ich ehrlich gesagt gar nicht.
Eher jemand, der seine Fähigkeiten wieder mal bei weitem überschätzt
hat. Es besteht halt immer noch ein gewaltiger Unterschied zwischen
Wollen und Können. Und den wird es auch immer geben. 'Wollen' kann man
schnell etwas, interessiert aber keinen. Entscheidend ist, was ein Mann
kann und was er nicht kann (tm Captain Jack Sparrow).
Ich hab es irgendwie hinbekommen fragt mich nicht wie aber es geht jetzt
habe mich durch den vorhandenen Code durchgelesen von SHT bis ich es
irgendwie zum laufen gekriegt habe.
PS:Ich hasse C++
Wieso??? schrieb:> Ich hab es irgendwie hinbekommen fragt mich nicht wie aber es geht jetzt
ganz schlecht.
> habe mich durch den vorhandenen Code durchgelesen von SHT bis ich es> irgendwie zum laufen gekriegt habe.
und es wird auch nicht besser.
> PS:Ich hasse C++
Ich glaube das ist deinem C-Quelltext egal...