Hallo Leute, die nächste Frage zum C Zunächst einmal der Anfang der Funktion void loop_back_without_interrupt(void) { Uchar buffer[8]; st_cmd_t msg; // Was ist das ??? msg.pt_data = &buffer[0]; msg.status = 0; msg.handle = 0; "st_cmd_t" finde ich nur moch in einer Lib mit diesem Eintrag Uchar can_cmd (st_cmd_t* cmd) { Uchar mob_handle, cpt; Ich würde das aber für eine lokale Variable halten, oder besser einen Pointer. Ist hier wieder einmal der Name doppelt verwendet worden, oder hängen die beiden irgendwie zusammen? Auch finde ich keine Deklaration für "msg". Sie wird nicht lokal definiert, nicht übergeben und eine globale Definition finde ich auch nicht.
st_cmd_t ist irgendein Datentyp (Struktur)! msg wird als st_cmd_t angelegt. Mit Pointern ist dort garnichts!!!
<<st_cmd_t ist irgendein Datentyp (Struktur)! Muss das nicht irgendwo deklariert werden? msg wird als st_cmd_t angelegt. ??? Das Eine bekommt den Inhalt des Anderen? Aber wie geht das. Es muss doch zuerst irgendwo deklariert werden?
Wenn Du einen CString anlegst, dann muss dieser doch auch nicht deklariert werden, weil er bereits in irgendeiner Library drin steckt!
nun, dann ist er ja deklariert, in der Library. Ich finde das Ding hier aber nur 2 mal. Das hier halte ich für eine Zuweisung Uchar can_cmd (st_cmd_t* cmd) und das auch st_cmd_t msg; wobei mir hier irgendwie eine zuweisungszeichen feht sowas wie "= " oder so
ich kriegs ja nicht hin! der Zauber funktioniert nicht und ich versuche rauszufinden warum. Wenn ich nicht weiß wer wem was übergibt und was er damit tut.. ich weiß ja noch nicht einmal wem ich was übergebn muss und wenn ich was zurückbekomme weiß ich nicht woher es kommt. Das sind keine guten Vorausstzungen um damit zu arbeiten.
Dazu muß ein *.h-File existieren wo drin steht: typedef blabla st_cmd_t; anders geht es nicht. Nur die Standardtypen int, char, float usw. sind vordefiniert. Peter
Die Struktur st_cmd_t ist irgendwo deklariert. Nicht in einer Library, sondern in einer Headerdatei. Uchar can_cmd (st_cmd_t* cmd) { Uchar mob_handle, cpt; Das hingegen ist der Anfang einer Funktion namens can_cmd. Die hat einen Rückgabewert vom Typ Uchar und bekommt als Argument einen Pointer auf obengenannte Struktur übergeben. Wenn Du nicht in den Sourcefiles der Library suchen würdest, sondern in den Headerdateien, dann stößt Du auch auf die Deklaration der Struktur. Einen Hinweis darauf, welche Headerdatei es sein könnte, könnten die #include-Anweisungen im von Dir gefundenen Sourcefile geben, das muss aber nicht so sein, da es geniale Entwickler mit sehr eigenartigen Vorstellungen vom Umgang mit Headerdateien gibt. Also: findstr /s /c:"st_cmd_t" *.h in die Windows-Kommandozeile eingegeben oder das grep-Äquivalent in die Shell gehackt ...
Naja, wenn ich es in der .h finden würde, wäre es ja einfach und im Prinzip hast Du ja auch Recht, es steht ja auch in der .h mit diesem Eintrag und das ist wirklich und wahrhaftig alles gesuch habe ich übrigens zur Sicherheit in allen Dateien, nicht nur in den .c oder .h /*_____ T Y P E D E F - D E C L A R A T I O N ________________________________*/ /** * @brief This enum is used to select an action for a specific message declare * on structure st_cmd_t. **/ typedef enum { CMD_TX, CMD_TX_REMOTE, CMD_RX, CMD_ABORT } can_cmd_t;
ok, ich glaub ich habs gefunden ... /** * @brief This structure allows to define a specific action on CAN network. * handle: manage by the library. * * cmd : initialize by the application to select the operation * id : initialize by the application in transmission * complete by the library in reception * dlc : initialize by the application to give the number of data to transmit * complete by the library in reception * pt_data: pointer on the table which contains the data to send or received * status: manage by the library * ctrl : field rtr to signal a remote frame * field ide to signal a extended frame **/ typedef struct{ Uchar handle; can_cmd_t cmd; can_id_t id; Uchar dlc; Uchar* pt_data; Uchar status; can_ctrl_t ctrl; } ts_cmd_t; Da kann ich dann ja lange suchen ...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.