【发布时间】:2026-02-02 03:55:01
【问题描述】:
我目前开始使用C30(基于GCC 的C 编译器,来自微芯片的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 的正确二进制表示法是什么?
【问题讨论】:
-
将其转换为十六进制数。至于将某些内容设置为(二进制)
0000,为什么不使用普通的十进制0或十六进制0x00? -
谁告诉你 // cmets 是“错误的”?
-
我想我的问题可能措辞错误,所以这里有一些更正。我知道我可以只使用十六进制或十进制而不是二进制,我只是想知道使用二进制文字的“正确”方式是什么。关于我说 // cmets 是“错误的”,我是从编译器警告中得到的,除了编译器之外没有人告诉我。无论如何,感谢所有帮助的家伙!我得到了一些很棒的答案,我希望我可以将它们全部标记为答案,但遗憾的是我只能对一个这样做。
-
@hak8or:那么它不是 c99 或 c11 编译器。
-
@JoachimPileborg:完全迂腐,
0是一个 八进制 常量,而不是十进制(!)
标签: c compiler-construction standards standards-compliance c11