Что означает оператор ': ='?

Я пытаюсь скомпилировать pthreads для MSVC2015 и нашел какой-то странный код.

localPtr->wNodePtr->spin := PTW32_TRUE;

Что делает эта линия?

Ответ 1

Как отмечали другие, := не является допустимым C-оператором.

Однако этот "оператор" := находится дважды в текущем выпуске "PThread for Windows" , который, как представляется, равен версии v.2.9.1.

Оба события появляются в ptw32_OLL_lock.c, который объявляет "реализует расширенные блокировки для чтения/записи на основе очереди", но, похоже, не является частью сборки pthread*.dll, поэтому файл ptw32_OLL_lock.c не передается компилятор.

Довольно интересно, что исходный файл содержит int main() и не находится в подкаталоге test.

В целом это похоже на альфа, бета или просто шум, поэтому просто удалите его.

Ответ 2

Стандарт IIRC, C ничего не говорит о :=. Так что, скорее всего, это не стандартный C.

Однако, AFAIK, некоторые языки, которые используют = в качестве оператора сравнения, чтобы отделить назначение от сравнения, используйте := как оператор присваивания. [Пример: Паскаль, postgresql]

В некоторых других случаях он несет в себе смысл, что переменная получает определенную и назначенную на том же шаге, чтобы отличать ее от обычного назначения в другом месте. [Пример: GO]

Ответ 3

: = не является допустимым оператором в C.

Однако он используется на других языках, например ALGOL 68. В принципе, для того, что вы хотите знать, в следующем примере: = используется для назначения переменной PTW32_TRUE localPty- > wNodeptr- > spin

Это делается главным образом для устранения какой-либо двусмысленности в коде, чтобы избежать использования '=' для назначения.

Ответ 4

": =" является присвоением переменной в синтаксисе Pascal, тогда как тест равенства равен "="