我正在尝试为 MSVC2015 编译 pthread,并发现了一些奇怪的代码。
localPtr->wNodePtr->spin := PTW32_TRUE;
这条线在做什么?
我正在尝试为 MSVC2015 编译 pthread,并发现了一些奇怪的代码。
localPtr->wNodePtr->spin := PTW32_TRUE;
这条线在做什么?
正如其他人指出的那样,:=
它不是有效的 C 运算符。
然而,这个“操作符”在当前的“ PThread for Windows:=
”源代码版本中出现了两次,似乎是从 v2.9.1 开始。
这两种情况都出现在 中ptw32_OLL_lock.c
,它宣称“实现了基于扩展读取器/写入器队列的锁”,但似乎不是pthread*.dll
构建的一部分,因此文件ptw32_OLL_lock.c
没有传递给编译器。
有趣的是,有问题的源文件包含一个int main()
并且不在test
子目录中。
总而言之,这似乎是 alpha、beta 或只是噪音,所以只需将其删除。
IIRC,C
标准未指定有关:=
操作员的任何内容。所以,很可能,它不是标准的C
。
但是,AFAIK,一些使用=
as 比较运算符将赋值与比较分开的语言使用:=
as赋值运算符。[示例:帕斯卡、postgresql]
在其他一些情况下,它的含义是在同一步骤中定义和分配变量,以区别于其他地方的正常分配。[例如:去]
:= 不是 C 中的有效运算符。
但是,它确实在其他语言中使用,例如 ALGOL 68。基本上,对于您想知道的内容,此示例中的 := 用于将变量 PTW32_TRUE 分配给 localPty->wNodeptr->spin
这样做主要是为了消除代码中的任何歧义,以避免使用 '=' 进行赋值。
“:=”是Pascal语法中对变量的赋值,而相等测试是“=”