Makro

Gast #316238
Lesenswert?
• ▲
▼
Hallo leute ich sitz hier auf der Arbeit und bin schon am verzweifeln

ich habe folgendes Makro definiert

#define SET_AQS_NOXWERT(v)

gtcan_0_user_msg_bfr_tx[0].GTCAN_Message_Byte[1].byte = (unsigned
char)(v & 0xFF),\

gtcan_0_user_msg_bfr_tx[0].GTCAN_Message_Byte[2].byte &= 0xF8,\
                      // Bit 0,1 löschen

gtcan_0_user_msg_bfr_tx[0].GTCAN_Message_Byte[2].byte |= (unsigned
char)((v & 0x0300)>>8),\    // Bit 0,1 maskieren,schiften und setzen

Das Problem ist: Der compiler erkennt die letzte Zeile nicht.
Die Zeilen habe ich durch ,\ getrennt.
Ich habe es ohne Komma mit \, mit Komma ohne \ ,ohne alles...
Nix geht... kann mir jemand helfen ?
Gast #316240
Lesenswert?
• ▲
▼
1/ Unbedingt das Argument im Makro klammern. Sonst suchst du dich
dämlich zur Operatorenrangfolge, wenn du mal sowas verwendest
SET_AQS_NOXWERT(v+1);

2/ #define SET_AQS_NOXWERT(v) \
gtcan_0_user_msg_bfr_tx[0].GTCAN_Message_Byte[1].byte = (unsigned
char)((v) & 0xFF), \
gtcan_0_user_msg_bfr_tx[0].GTCAN_Message_Byte[2].byte &= 0xF8, /* Bit
0,1 löschen */ \
gtcan_0_user_msg_bfr_tx[0].GTCAN_Message_Byte[2].byte |= (unsigned
char)(((v) & 0x0300)>>8), /* Bit 0,1 maskieren,schiften und setzen */

Wie geht es hier nach dem letzten , weiter? Bist du sicher mit dem ,
oder können es auch ; sein?

3/ Die Kommentare kann ich nicht mit den Bitoperationen in Einklang
bringen. Bei "Bit 0,1 löschen" und der Maske 0xF8 kräuseln sich mir
die Fußnägel ;-)
Gast #316242
Lesenswert?
• ▲
▼
Stell dir einfach vor, jeder \ entfernt nur den einen nachfolgenden
Zeilenvorschub (nicht 2 Zeilenvorschübe !), d.h. alles steht wirklich
in einer Zeile.


Dann wird Dir nämlich klar, daß ein //-Kommentar mit Zeilenverlängerung
Unfug ist.


Peter

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.