运算符':='是什么意思?

What does operator ':=' mean?

我正在尝试为 MSVC2015 编译 pthreads,发现了一些奇怪的代码。

localPtr->wNodePtr->spin := PTW32_TRUE;

这条线是做什么的?

IIRC,C 标准没有指定任何关于 := 运算符的内容。所以,很可能,它不是标准的 C.

但是,据我所知,一些使用 = 作为比较运算符的语言将 赋值 比较 分开,使用 := 作为 赋值 运算符。 [示例:Pascal、postgresql]

在其他一些情况下,它意味着变量在同一步骤中得到定义和赋值,以区别于其他地方的正常赋值。 [示例:开始]

:= 不是 C 中的有效运算符。

但是它确实在其他语言中使用,例如 ALGOL 68。基本上,对于您想知道的,本示例中的 := 用于将变量 PTW32_TRUE 分配给 localPty->wNodeptr ->自旋

这主要是为了消除代码中的歧义,以避免使用“=”进行赋值。

正如其他人指出的那样,:= 不是有效的 C 运算符。

然而,这个 "operator" :=the current "PThread for Windows" source release which seems to be as of v2.9.1 中找到了两次。

这两种情况都出现在 ptw32_OLL_lock.c 中,它声称“实现扩展的 reader/writer 基于队列的锁 ”,但似乎不是pthread*.dll 构建,因此文件 ptw32_OLL_lock.c 未传递给编译器。

有趣的是,有问题的源文件包含一个 int main() 并且不在 test 子目录中。

总而言之,这似乎是 alpha、beta 或者只是噪音,所以请删除它。

":=" 是 Pascal 语法中的变量赋值,而等式测试是 "="