我正在尝试为MSVC2015编译pthreads,发现了一些奇怪的代码。
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(某些使用=
作为比较运算符的语言(将赋值与比较分开,使用 :=
作为赋值运算符。[示例:Pascal,postgresql]
在其他一些情况下,它意味着变量在同一步骤中被定义和赋值,以与其他地方的正常赋值区分开来。[示例:GO]
:= 在 C 语言中不是有效的运算符。
然而,它确实在其他语言中使用,例如ALGOL 68。基本上,对于您想知道的内容,此示例中的 := 用于将变量PTW32_TRUE分配给 localPty->wNodeptr->spin
这样做主要是为了消除代码中的任何歧义,以避免使用"="进行赋值。
":=" 在 Pascal 语法中是变量赋值,而相等测试是 "=">