c语言 - 运算符":="是什么意思?



我正在尝试为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 语法中是变量赋值,而相等测试是 "=">

相关内容

  • 没有找到相关文章

最新更新