我正在对 XMOS 处理器的一些简单教程代码进行故障排除,我遇到了一个我以前从未在 C 中见过的运算符。
<:
有什么作用?正如这里使用的那样,它似乎设置了一个变量高或低,但为什么不直接使用=
?
void flashing_led_task1(port p,int delay_in_ms){
while(1){
p<:0;
delay_milliseconds(delay_in_ms);
p<:1;
delay_milliseconds(delay_in_ms);
}
}
这只是一个通用问题,我无法通过谷歌搜索或搜索堆栈交换找到它。
在标准 C 中,
<:
和 :>
符号是 digraphs。除了拼写外,<:
等同于 [
和 :>
等同于 ]
.
但是,当这些符号在您的代码中被翻译时(并且为了可读性而重新格式化代码,包括在
void
和函数名称之间、port
和 p
之间以及 int
和 delay_in_ms
之间添加一个空格
),你最终得到:
void flashing_led_task1(port p, int delay_in_ms)
{
while (1)
{
p[0;
delay_milliseconds(delay_in_ms);
p[1;
delay_milliseconds(delay_in_ms);
}
}
这没有多大意义。因此,您可能需要仔细阅读系统上 C 编译器的手册才能了解它的含义。或者它可能只是你的复制'n'粘贴操作(我假设)省略了一些空格,也省略了
:>
符号或代码片段的其他关键位。
随着Eugene Sh.关于XC的提示,第13页(第2章开始)的手册XC手册有一个图表:
<:
用于输出:>
用于输入p14 上的代码显示了这些正在使用的运算符。
XC虽然与C密切相关,但并不相同。