Warnung unklar

Gast #178460
Das kann Dir nur die Expansion des Makros REED_BUF_MASK verraten.

Es ist generell eine gute Idee, in solchen Makros auf der rechten
Seite aus Prinzip zu klammern.
Gast #178462
#include <inttypes.h>

#define REED_BUF_MASK 7

struct
foo_s
{
        uint8_t buf_idx;
};

int
main(void)
{
        volatile struct foo_s spd;

        while(1)
        {
                spd.buf_idx = (spd.buf_idx + 1) & REED_BUF_MASK;
        }

        /* NEVEREACHED */
        return 0;
}

Das gibt bei mir keinen Fehler, und auch keine Warnung.
Opt: -s, Debug: ELF/DWARF-2, MCU: mega8
Gast #178463
/* foo.h: ***************/
#define REED_BUF_MASK 7

typedef struct{
   uint8_t buf_idx;
}foo_t;

/* foo.c ***************/
#include "foo.h"
/* #include weiteres */

foo_t spd;

void nicht_main(void){
   /* code */
   spd.buf_idx = (spd.buf_idx + 1) & REED_BUF_MASK;
   /* code */
}
Angehängte Dateien:
Gast #178466
Naja, der Code in kombination mit dem Makefile ist nicht Kompilierbar.
Wenn ich es so Modifiziere, daß es sich kompilieren lässt (fehlende
includes etc), bekomme ich wieder keine Fehlermeldung!
Gast #178467
Ich bin ein riesen Rindvieh und versinke im Boden. In meinem Kopf war
REED_BUF_MASK ne simple Konstante und nach ner durchzechten
Programmiernacht (Termindruck;-) irgendwie nicht mehr im bewußten
Blickfeld...

#define REED_BUF_SIZE 8
#define REED_BUF_MASK REED_BUF_SIZE-1

Sorry und vielen Dank!!!

So ist alles tutti:
#define REED_BUF_MASK (REED_BUF_SIZE-1)

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 21 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.