Any binary notation in C-source?

Technical Note 46979

Arkitekturer:

All

Komponent:

compiler

Uppdaterad:

2016-04-20 11:27

Introduction

It is not possible to use binary notation (for example 0b01010101) in C-source when compiling with an IAR Systems compiler.

Background

The notation 0b01010101 is not supported by the C-language (neither in C99 nor in C89). IAR Systems has not added any extension to support such notation. (Such an extension would make the C-source less portable.)

What to do

The solution is straight forward, as (for example) the binary value of 5 can be implemented as...

#define b0000000000000101 0x0005

...and such a #define can be added for any binary value in use in the application.

Templates

In order to simplify, download this zip file. The zip file contains two files:

  • Binary_values_8_bit.txt holds the defines for positive 8-bit binary values.
  • Binary_values_16_bit.txt holds the defines for positive 16-bit binary values.

Usage

Please note that the text files are not header files from a C perspective. (The larger file holds over 64.000 #defines, which makes it very cumbersome.)
Instead copy the needed #define's from the text file and add them to a header file in your project. In this way you get no build time penalty because of unused #define's.

All product names are trademarks or registered trademarks of their respective owners.

Det här innehållet finns tyvärr inte på svenska.

Vår webbplats finns främst på vårt koncernspråk engelska, förutom det innehåll för investerare som vi är lagstadgade att kommunicera på svenska. Vi rekommenderar att du besöker vår globala webbplats på engelska för att få en bättre upplevelse.

Vi stöder inte längre Internet Explorer. För att få bästa möjliga upplevelse av iar.com rekommenderar vi att du uppgraderar till en modern webbläsare som Chrome eller Edge.