BIT() Makro in IAR

#1785066
Lesenswert?

hmm.
Wegen so was bohrt man normalerweise keinen Compiler auf. In irgendeinem 
Header wird es wohl sein und du hast es übersehen.

Aber egal.
Von der Verwendung her würde ich sagen: Ja das wird wohl so definiert 
sein
1
#define BIT(x)    ( 1 << (x) )


Übrigens ist das keine so gute Idee. Wenn du mit Bits arbeitest, ist es 
in C oft einfacher es sich zur Gewohnheit zu machen:
Entweder ein Bit ist 0 oder es ist nicht 0

(also nicht: die Alternative ist, es ist 1)

Dann vereinfacht sich die Abfrage
1
  if (! (data & BIT(13)) )
2
    ...
3

4
  if ( (data & BIT(13)) != 0 )
5
    ...
Gast #1785228
Lesenswert?

> Ich konnte es in den >350 Headerdateien nicht finden.

Hast du keine IDE, mit der du zu Definitionen hinspringen kannst? 
Normalerweise geht das mit einem einzigen Tastendruck (wenn man die 
Taste kennt - F3 bei eclipse) oder mit dem Kontextmenü.
#1786611
Lesenswert?

Luk4s K. schrieb:
> ich hatte mit greap alle Dateien im Inc-Verzeichnis der IAR-Installation
> auf der Windows-Partition durchsuchen lassen.

Dann wirds wohl in nem Include des Projekts stehen.
Es ist kein reserviertes C-Wort, also muß es irgendwo im Quelltext oder 
dessen Includes stehen.

Du mußt Dir mal alle #include-Anweisungen der Quelltexte anzeigen 
lassen.
Vielleicht zeigen welche auf Dateien oder Verzeichnisse, die Du nicht 
mit kopiert hast.
Es soll auch Leute geben, die Includes anders nennen, also nicht *.h.
Prinzipiell könen Defines sogar im Make stehen.


Peter
#1795396
Lesenswert?

Also wenn das Problem noch aktuell ist, dann könnte ich dir Helfen. Ich 
arbeite mit ADuC7061 und dazu gibt es Paar Beispiele von ADI. Dort 
findet man in jedem Projekt entweder in einer Header-Datei oder gleich 
in main folgende Zeilen
1
// Bit Definitions
2
#define BIT0  0x01
3
#define BIT1  0x02
4
#define BIT2  0x04
5
#define BIT3  0x08
6
#define BIT4  0x10
7
#define BIT5  0x20

usw.
Somit mit deiner Zeile
1
if ((data & BIT(13)) == BIT(13))
überprüffst du ob in data an den 13.ten Bit eine 1 steht.

Ich hoffe ich konnte dir helfen.

mfg Wadim

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren