operator':='是什么意思?

时间:2015-07-01 07:48:32

标签: c gcc syntax pthreads colon-equals

我正在尝试为MSVC2015编译pthreads,并发现了一些奇怪的代码。

localPtr->wNodePtr->spin := PTW32_TRUE;

这条线在做什么?

4 个答案:

答案 0 :(得分:5)

正如其他人所指出的,:=不是有效的C运算符。

但是,the current "PThread for Windows" source release which seems to be as of v2.9.1中会发现此“运算符”:=两次。

两个出现的内容都出现在ptw32_OLL_lock.c中,它宣称“实现扩展的读取器/写入器基于队列的锁”,但似乎不是pthread*.dll构建的一部分,因此文件ptw32_OLL_lock.c不会传递给编译器。

有趣的是,有问题的源文件包含int main(),并且不在test子目录中。

总而言之,这似乎是alpha,beta或它只是噪音,所以只需删除它。

答案 1 :(得分:4)

IIRC,C标准未对:=运算符进行任何说明。因此,最有可能的是,它不是标准C

但是,AFAIK(使用=作为比较运算符的某些语言)将赋值比较分开,使用:=作为分配运算符。 [例如:Pascal,postgresql]

在其他一些情况下,它表示变量在同一步骤中定义并分配,以区别于其他地方的正常分配。 [例如:GO]

答案 2 :(得分:2)

:=不是C中的有效运算符。

但是它确实可以用于其他语言,例如ALGOL 68.基本上,对于你想知道的,在这个例子中使用:=用于将变量PTW32_TRUE赋值给localPty-&gt; wNodeptr-&gt; spin < / p>

这主要是为了消除代码中的任何歧义,以避免使用'='进行赋值。

答案 3 :(得分:0)

&#34;:=&#34;是在Pascal语法中赋值变量,而相等测试是&#34; =&#34;