Я пытаюсь скомпилировать pthreads для MSVC2015 и нашел какой-то странный код.
localPtr->wNodePtr->spin := PTW32_TRUE;
Что делает эта линия?
Я пытаюсь скомпилировать pthreads для MSVC2015 и нашел какой-то странный код.
localPtr->wNodePtr->spin := PTW32_TRUE;
Что делает эта линия?
Как отмечали другие, :=
не является допустимым C-оператором.
Однако этот "оператор" :=
находится дважды в текущем выпуске "PThread for Windows" , который, как представляется, равен версии v.2.9.1.
Оба события появляются в ptw32_OLL_lock.c
, который объявляет "реализует расширенные блокировки для чтения/записи на основе очереди", но, похоже, не является частью сборки pthread*.dll
, поэтому файл ptw32_OLL_lock.c
не передается компилятор.
Довольно интересно, что исходный файл содержит int main()
и не находится в подкаталоге test
.
В целом это похоже на альфа, бета или просто шум, поэтому просто удалите его.
Стандарт IIRC, C
ничего не говорит о :=
. Так что, скорее всего, это не стандартный C
.
Однако, AFAIK, некоторые языки, которые используют =
в качестве оператора сравнения, чтобы отделить назначение от сравнения, используйте :=
как оператор присваивания. [Пример: Паскаль, postgresql]
В некоторых других случаях он несет в себе смысл, что переменная получает определенную и назначенную на том же шаге, чтобы отличать ее от обычного назначения в другом месте. [Пример: GO]
: = не является допустимым оператором в C.
Однако он используется на других языках, например ALGOL 68. В принципе, для того, что вы хотите знать, в следующем примере: = используется для назначения переменной PTW32_TRUE localPty- > wNodeptr- > spin
Это делается главным образом для устранения какой-либо двусмысленности в коде, чтобы избежать использования '=' для назначения.
": =" является присвоением переменной в синтаксисе Pascal, тогда как тест равенства равен "="