hi,
hat von euch jemand schonmal folgende Fehlermeldung erhalten?
Oder was könnte die fehlermeldung bedeuten? bin neu hier und weiß damit
nichts anzufangen.
request for member 'ptrRdProt' in something not a structure or union
gruß
Generell löst man solche Probleme, in dem man google nach der
Fehlermeldung ohne den Variablennamen suchen lässt. So viele
Feherlmeldungen gibt es gar nicht, das andere das nicht auch schon mal
hatten.
In deinem Fall dürfte ein ->ptrRdProt an Stelle des .ptrRdProt das
Problem lösen.
Oliver
Ralf schrieb:
> Doch den Punkt hab ich schon überal stehen.^
Und genau das wird dann wohl das Problem sein.
> Wüsste sonst auch nicht> woran es liegen könnte.bin eben en Anfänger
Tja, wir wissen es auch nicht.
Wir könnten dir wahrscheinlich weiterhelfen, wenn du uns den Source Code
zeigen würdest. Aber so, leider, leider, wir sind halt alle keine
Hellseher.
auch immer ein heißer Tip:
irgendwo vorher }, ), ; oder so vergessen.
Der Parser kann dann einiges an Fehlinterpretation liefern und erkennt
eine structure nicht mehr unbedingt als solche.
Aber zuerst probier mal -> statt . aus.
Ralf schrieb:
> Wieso meinst abwarten?> Könnte es sein das es garnicht an dem gelegen hat?
Doch, wenn der Compiler zufreiden ist, dann wirds das schon gewesen
sein.
Aber die Art wie du frägst und wie du so gar nichts mit der
Fehlermeldung anfangen konntest, lässt schliessen das du soeben dabei
bist die ganze Fehlerklasse der 'Pointer zeigt ins Nirwana' Fehler zu
entdecken.
Daher abwarten. Fehler, die dir der Compiler findet sind einfach. Jetzt
gehts erst richtig los mit dubiosen Laufzeitfehlern :-)
Ja das glaub ich auch.Bin eben noch ganz am Anfang meiner
Programmierlaufbahn.
Würd mich freuen wenn du mir bei einem weiteren fehler,der bestimmt
auftaucht, wieder weiterhelfen könntest
hab mal ein paar Zeilen kopiert die ich verwende(bitte lachen
verkneifen)
//Protikol.c
GetSpiBlock(&Prot);
AddProt(&Prot);
//Test.c
PROTOKOL spidata;
Fasse hier meine Daten in der Struktur zusammen.
GetSpiBlock(PROTOKOL* spiData);
//Protokol.c
void AddProt(PROTOKOL* test)
{
Prot.battery_mode = test->battery_mode;(1)
Prot.temperature = test->temperature; (1)
.
.
.
}
Das was ich hier mach ist nicht richtig und wenn dann sehr sinnlos,oder?
Kannst du es bisschen nachvollziehen was ich vorhab?
Also in den zeilen kam vorhin die Fehlermeldung(1).
Die Parameter,die ich übergebe, macht man das so oder was schlägst du
vor?
Guten Morgen,
Bei mir tauchen aber auch viele Fehlermeldungen auf.
Wie könnte man denn folgende interpretieren? incompatible type for
argument 1 of 'AddProt'
//deklaration
PROTOKOL spiData;
Der Fehler wird genau hier angezeigt
AddProt(spiData);
spidata wird hierher übergeben
void AddProt(PROTOKOL* Prot)
{
.
.
}
spidata ist eine Struktur und geb davor paar Werte rein.
Kann mir da jemand weiterhelfen?
danke schonmal
>spidata wird hierher übergeben>void AddProt(PROTOKOL* Prot)
Erwartet wird ein pointer auf spiData, du rufst aber mit spiData direkt
auf, und deshalb meckert der Compiler.
Oliver
Wollte gestern noch ein paar Zeilen dazu schreiben, habs aber dann
verschwitzt :-)
Ralf schrieb:
> Das was ich hier mach ist nicht richtig und wenn dann sehr sinnlos,oder?
Ob das sinnlos ist oder nicht, kann man anhand des kurzen Ausschnitts
nicht sagen. Dazu kann ich zuwenig nachvollziehen was die Absicht
dahinter ist, wie die Datentypen sind, etc.
> Kannst du es bisschen nachvollziehen was ich vorhab?
Nicht wirklich.
> Die Parameter,die ich übergebe, macht man das so oder was schlägst du> vor?
Das ist schon so in Ordnung.
Aber: man kann in C Strukturen auch in einem Rutsch zuweisen. Die
Aufdröselung in die einzelnen Strukturmember ist daher nicht unbedingt
notwendig.
Komplette Strukturzuweisung geht nicht (bzw. liefert falsche
Ergebnisse), sobald in der Struktur ein dynamisch allokierter Member
enthalten ist und natürlich klarerweise auch dann nicht, wenn gar nicht
die komplette Struktur zugewiesen werden soll.
1
voidAddProt(PROTOKOL*test)
2
{
3
Prot=*test;
4
}
Sind beide Einschränkungen nicht gegeben, dann ist diese Version
vorzuziehen, da man so nicht vergessen kann einen Member umzukopieren,
was besonders bei Änderungen in der Struktur (hinzufügen von Member) ein
nicht zu unterschätzender Stolperstein ist.
Viel dank das du mir schon wieder so sehr geholfen hast.
Jetzt sieht das ganze schon viel besser aus.
Jeder fängt halt mal klein an, so ging/geht es glaub mehreren.
Manche nehmen halt auf diese Rücksicht, die anderen weniger.
Ralf schrieb:
> Viel dank das du mir schon wieder so sehr geholfen hast.> Jetzt sieht das ganze schon viel besser aus.> Jeder fängt halt mal klein an, so ging/geht es glaub mehreren.> Manche nehmen halt auf diese Rücksicht, die anderen weniger.
Das soll aber nicht heißen, dass ich nicht die Position von Peter
stütze. Er hat nämlich recht! Du brauchst ein C-Buch!
In C, oder einer Programmiersprache allgemein, gibt es noch genügend
Stolersteine und Fallen und wissenswerte Dinge, ohne deren Kentniss eine
sinnvolle Programmierung nicht möglich ist. Online Tutorials sind da oft
keine Alternative. Bücher haben nicht umsonst einen Umfang von ein paar
hundert Seiten, ich kenne aber kein Tutorial, welches ähnlich
umfangreich wäre. Viele Online Tutorials sind oft auch einfach nur die
Lernunterlagen einer Schule oder Uni. Die sind also gedacht um einen
Kurs zu begleiten, in dem ein Lehrer vorn an der Tafel steht und die
Dinge erklärt und sich die Schüler in den ausgedruckten Texten Notizen
machen.
Wenn man erst mal eine Programmiersprache beherrscht und die Prinzipien
der Programmierung intus hat, sieht die Sache anders aus. Dann kann man
aus den kurzen Tutorials die benötigten Informationen entnehmen um die
Unterschiede zu Bekanntem zu entnehmen.
Aber auch dann bevorzuge ich immer noch ein Buch. Es ist in einigen
Bereichen einem Online Tutorial überlegen und der einzige Nachteil
besteht darin, dass es Geld kostet. Geld das allerdings gut angelegt
ist.
Ja da geb ich dir auch recht. Bei mir ist das nur so das ich das nicht
beruflich mach, sondern ein Teil einer Abschlussarbeit ist. Im späteren
Leben werd ich meine Finger davon lassen*g*.Ist glaub auch besser so.
Für das c Programmieren muss man geboren sein und nicht alles in sich
hinein zwingen. Trotz allem muss ich das Projekt irgendwie hinbekommen.
Irgendwie versteh ich das nicht.
In letzter Zeit haben wir hier im Forum eine Menge 'Abschlussarbeiten',
mit denen der Abschliessende deutlich überfordert ist.
Ich dachte immer eine Abschlussarbeit sei etwas, bei dem man seine
Schokoladenseite zeigt. Da wählt man sich doch nicht ein Thema, von dem
man von vorne herein schon sagen kann "das ist nichts für mich" bzw.
"ich hab noch nicht mal den blassesten Schimmer wie ich das anfangen
soll" (das trifft jetzt nicht auf dich zu, kommt aber hier im Forum auch
vor).
Oft hat man hier den Eindruck, dass eine Abschlussarbeit nach der
Methode gewählt wird "Möglichst viel Show. Dass ich das nicht hinkriegen
werde spielt keine Rolle, darüber kann ich mir 24 Stunden vor Ende der
Abgabefrist immer noch Gedanken machen. Aber falls ja doch (die Chancen
sind unter 10%), dann ist das der Knaller. Hilfe!!!!!"
Oder kriegt ihr die Dinger zugelost?
Wenn allerdings zugelost, dann muss ich mich schon fragen: Was habt ihr
die vorhergehende Zeit gemacht? Zugeloste Projekte fallen im
Schwierigkeitsgrad ja nicht vom Himmel sondern sind oft nur Variationen
oder Kombinationen von irgendwelchen vorhergehenden Laborübungen. Nichts
wirklich Neues.
Ralf schrieb:
> Jeder fängt halt mal klein an, so ging/geht es glaub mehreren.
Stimmt, und ich habe das Buch, das ich mir gekauft habe um C zu lernen,
heute noch.
> Manche nehmen halt auf diese Rücksicht, die anderen weniger.
Manche Anfaenger nehmen einen Rat an, auch wenn er ihnen nicht schmeckt.
Andere noergeln lieber und wollen bedient werden...
> Bei mir ist das nur so das ich das nicht beruflich mach, sondern ein Teil> einer Abschlussarbeit ist. Im späteren Leben werd ich meine Finger davon> lassen*g*.
Kurz: Schon wieder einer von denen, die nur herkommen um sich die
Hausaufgaben machen zu lassen :-(