繁体   English   中英

operator':='是什么意思?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM