Forum: Compiler & IDEs hohe C - Schule


von flyingwolf (Gast)


Lesenswert?

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.

von Thomas (Gast)


Lesenswert?

st_cmd_t ist irgendein Datentyp (Struktur)!

msg wird als st_cmd_t angelegt.

Mit Pointern ist dort garnichts!!!

von flyingwolf (Gast)


Lesenswert?

<<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?

von Thomas (Gast)


Lesenswert?

Wenn Du einen CString anlegst, dann muss dieser doch auch nicht
deklariert werden, weil er bereits in irgendeiner Library drin steckt!

von flyingwolf (Gast)


Lesenswert?

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

von Thomas (Gast)


Lesenswert?

!!! Nimm es doch einfach so hin und arbeite einfach damit !!!

von flyingwolf (Gast)


Lesenswert?

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.

von Peter D. (peda)


Lesenswert?

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

von Rufus T. Firefly (Gast)


Lesenswert?

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 ...

von flyingwolf (Gast)


Lesenswert?

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;

von flyingwolf (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.