I am currently starting out with programming micro controllers using C30
(A C
compiler based on GCC
from microchip for their PIC24
devices) and I enabled Strict ANSI warnings
out of curiosity. First off, I did not know that in C11 comment markings like // are "wrong" and instead I should use /* blah blah */, but what really surprised me is this warning for a line of code.
"warning: use of non-standard binary prefix"
The line of code is:
OSCCONbits.COSC = 0b000;
I have looked online at one of the drafts of C11 (ISO/IEC 9899:2011) and can't find anything about binary prefixes in C. http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf
What is the correct binary notation for C according to C11?
C does not have binary constants. (Even in C11 they are not supported.)
They were proposed as an addition to C99 but the proposition was rejected.
From C99 Rationale document:
You said you are using a compiler based
gcc
andgcc
supports binary constants: they are a GNU extension to the C language.See
gcc
page about binary constants for more information:http://gcc.gnu.org/onlinedocs/gcc/Binary-constants.html