I am working on a project with the TM4C123GH6PM microcontroller using Keil version 4.7. When I assign a value to a variable in binary format like the following:
unsigned char tmp = 0b11000011;
and then I build the project, the following error appears:
expected a ";"
When I change the format to hex -using 0X- or Decimal, the error disappears.
Doesn't the compiler in Keil μVision support the binary format?
-
1What did the Keil documentation say?old_timer– old_timer2021年02月19日 18:01:32 +00:00Commented Feb 19, 2021 at 18:01
3 Answers 3
ANSI C doesn't specify a syntax for binary literals. Keil compilers follow the ANSI C standard, and their manual usually record any deviations or extensions.
A previous discussion on this can be found here Why doesn't C have binary literals?
1 Comment
The Keil Arm v5 (ARMCC) compiler does not support binary literals. But the Keil Arm V6 (ARMCLANG) compiler does support binary literals. The Arm v6 compiler option is available with Keil MDK v5.12 and later. You may need to port some of your code to switch compiler versions (Migration Guide).
Comments
Open the "Options for target" → switch to "C/C++" tab → add --gnu in the "Misc Controls" textbox.
Code like int a = 0b101010; compiles without any error.
I am using MDK 5.18 and ARMCC V5.06 update1 (build 61).