我正在尝试为MSVC2015编译pthreads,并发现了一些奇怪的代码。
localPtr->wNodePtr->spin := PTW32_TRUE;
这条线在做什么?
答案 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;