Und in der rc5.h habe ich sie rausgelöscht, und in die main getan. Nun geht es... Warum weiß ich ehrlich gesagt nicht.Zitat von SprinterSB
Hä??? Die Zeile steht doch schon in rc5.h... Die Doppelte Deklaration sollte also nix zur Sache tun.
Die Zeile sagt dem Compiler, daß rc5 vom Typ rc5_t ist, ohne jedoch so ein Objekt anzulegen, d.h. Platz dafür zu reservieren.
Die Compiler kann also auf das Objekt (bzw) seine Komponenten, Adresse, ...) zugreifen, ohne zu wissen, wo das Ding genau liegt. Das Anlegen (=Instanziieren, Definieren) geschieht in rc5.c mittels
rc5_t rc5;
In beiden Fällen muss der Typ rc5_t schon bekannt sein, sonst gibt's nen Compilerfehler.
Ohne das extern... in main.c scheint der Compiler (bzw. Linker) auf zwei unterschiedliche Objekte rc5 zuzugreifen, so daß das, was in rc5.c nach rc5 geschrieben wird, was anderes ist als in main aus rc5 gelesen wird (weil zweites ein anderes Objekt ist).
Genaue Aussagen kann man eigentlich nur mir dem Code zusammen mit Map-File und Assemblerausgabe des Compilers machen, d.h. ob's sich evtl um einen Compiler-, Linker- oder Makefile-Fehler handelt.
https://www.roboternetz.de/wissen/in...en_mit_avr-gcc
https://www.roboternetz.de/wissen/in...file_erstellen
Disclaimer: none. Sue me.
Und in der rc5.h habe ich sie rausgelöscht, und in die main getan. Nun geht es... Warum weiß ich ehrlich gesagt nicht.Zitat von SprinterSB
Es *muss* auch gehen, wenn das extern.... in rc5.h verbleibt.
Bekommst du Warnungen, wenn du mit
übersetzt?Code:-W -Wall -fno-common
Disclaimer: none. Sue me.
Hallo zusammen,
ich habe ein ähnliches Problem.
Es geht um einen ATmega8 bei 16MHz
In Main bekomme ich für rc5.flip einen Passenden Wert. Aber rc5.code und rc5.addr liefern nur Nullen.
Ich schreibe den Wert von rc5.code auf den PORTC und bekomme nur Null. Der PORTC funktioniert ich habe test weise den mal inkrementiert und sobald ich die FB betätige zählt der schön hoch.
Wäre nett wenn mir jemand helfen würde.
Danke
ZoToS
Lesezeichen