hak*_*8or 7 c compiler-construction standards standards-compliance c11
我目前正在开始使用编程微控制器C30(C基于GCC微芯片的编译器为他们的PIC24设备),我Strict ANSI warnings出于好奇而启用.首先,我不知道在C11评论标记如//是"错误的"而我应该使用/*blah blah*/,但真正令我感到惊讶的是这一行代码警告.
"警告:使用非标准二进制前缀"
代码行是:
OSCCONbits.COSC = 0b000;
我已经在线查看了C11(ISO/IEC 9899:2011)的草案之一,但在C中找不到任何关于二进制前缀的内容.http://www.open-std.org/jtc1/sc22/wg14/www /docs/n1570.pdf
根据C11,C的正确二进制表示法是什么?
oua*_*uah 19
C没有二进制常量.(即使在C11中也不支持它们.)
他们被提议作为C99的补充,但该提议遭到拒绝.
来自C99理由文件:
添加二进制常量的提议由于缺乏先例和实用程序不足而被拒绝.
您说您使用的是基于编译器gcc并gcc支持二进制常量:它们是C语言的GNU扩展.
整数常量可以写成二进制常量,由一系列
0和1数字组成,前缀为0b或0B.这在位级操作很多的环境(如微控制器)中特别有用.
有关gcc更多信息,请参阅有关二进制常量的页面
http://gcc.gnu.org/onlinedocs/gcc/Binary-constants.html