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

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.