运算符':='是什么意思?
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 语法中的变量赋值,而等式测试是 "="
我正在尝试为 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 语法中的变量赋值,而等式测试是 "="