[英]What does operator ':=' mean?
我正在尝试为MSVC2015编译pthreads并发现一些奇怪的代码。
localPtr->wNodePtr->spin := PTW32_TRUE;
这条线在做什么?
正如其他人所指出的:=
不是有效的C运算符。
但是,这个“operator” :=
在当前的“ PThread for Windows ”源代码版本中被发现两次, 这似乎是v2.9.1的版本 。
两个出现的ptw32_OLL_lock.c
都出现在ptw32_OLL_lock.c
,它宣称“ 实现扩展的 ptw32_OLL_lock.c
/写器队列锁定 ”,但似乎不是pthread*.dll
构建的一部分,因此文件ptw32_OLL_lock.c
不会传递给编译器。
有趣的是,有问题的源文件包含一个int main()
,并且不在test
子目录中。
总而言之,这似乎是alpha,beta或它只是噪音,所以只需删除它。
IIRC, C
标准没有具体说明:=
运算符。 所以,很可能,它不是标准的C
但是,AFAIK,一些语言,使用=
作为比较运算符,将赋值与比较分开,使用:=
作为赋值运算符。 [示例:Pascal,postgresql]
在某些其他情况下,它具有在同一步骤中定义和分配变量的含义,以区别于其他地方的正常分配。 [例子:GO]
:=不是C中的有效运算符。
但它确实可以用于其他语言,例如ALGOL 68.基本上,对于你想知道的,在这个例子中使用:=用于将变量PTW32_TRUE赋值给localPty-> wNodeptr-> spin
这主要是为了消除代码中的任何歧义,以避免使用'='进行赋值。
“:=”是在Pascal语法中赋值给变量,而等式测试是“=”
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.