Forum: Mikrocontroller und Digitale Elektronik Fehlermeldung interpretieren


von Ralf (Gast)


Lesenswert?

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ß

von Oliver (Gast)


Lesenswert?

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

von Ralf (Gast)


Lesenswert?

Doch den Punkt hab ich schon überal stehen. Wüsste sonst auch nicht 
woran es liegen könnte.bin eben en Anfänger

von Karl H. (kbuchegg)


Lesenswert?

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.

von horst (Gast)


Lesenswert?

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.

von Ralf (Gast)


Lesenswert?

also das -> anstatt dem . bewirkt Wunder. Also die Fehler sind jetzt weg
Vielen dank

von Karl H. (kbuchegg)


Lesenswert?

Ralf schrieb:
> also das -> anstatt dem . bewirkt Wunder.

Abwarten

von Ralf (Gast)


Lesenswert?

Wieso meinst abwarten?
Könnte es sein das es garnicht an dem gelegen hat?

von Karl H. (kbuchegg)


Lesenswert?

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 :-)

von Ralf (Gast)


Lesenswert?

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

von Ralf (Gast)


Lesenswert?

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?

von Ralf (Gast)


Lesenswert?

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

von Oliver (Gast)


Lesenswert?

>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

von P. S. (Gast)


Lesenswert?

Der richtige Zeitpunkt um sich ein C-Buch zu kaufen und die 
Trial&Error-Methode aufzugeben.

von Karl H. (kbuchegg)


Lesenswert?

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
void AddProt(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.

von Ralf (Gast)


Lesenswert?

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.

von Karl H. (kbuchegg)


Lesenswert?

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.

von Ralf (Gast)


Lesenswert?

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.

von Karl H. (kbuchegg)


Lesenswert?

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.

von P. S. (Gast)


Lesenswert?

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 :-(

von Ralf (Gast)


Lesenswert?

wo nörgele ich bitte rum?Bin euch dankebar für jede Hilfe.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.