Вопрос о синтаксисе C ++ - PullRequest
       3

Вопрос о синтаксисе C ++

1 голос
/ 04 октября 2010

Что означает | значит?

m_pD3DDevice->SetFVF(D3DFVF_XYZ | D3DFVF_DIFFUSE);

Ответы [ 4 ]

9 голосов
/ 04 октября 2010

Это переменная (вероятно, ссылающаяся на член this, так как m_* является соглашением об именах):

m_pD3DDevice

Это вызов метода

->SetFVF( ... )

Это побитовое ИЛИ двух констант флагов, которое является средством их объединения:

D3DFVF_XYZ | D3DFVF_DIFFUSE

побитовое ИЛИ берет функцию логического ИЛИ каждой пары битов из своих операндов. Так, например, приведены значения

D3DFVF_XYZ =     00000010 = 2
D3DFVF_DIFFUSE = 00010000 = 16
bitwise OR =     00010010 = 18

То, как обычно используется | для объединения отдельных битовых значений, означает, что его часто можно заменить простым старым +.

6 голосов
/ 04 октября 2010

Это побитовое или функция.

D3DFVF_XYZ и DFDFVF_DIFFUSE являются наиболее вероятными масками.

Например:

0x01 | 0x08 = 0x09
0 голосов
/ 04 октября 2010

"|"является оператором побитового ИЛИ.При использовании так, как в вашем примере кода, он сообщает вызываемой библиотечной функции, что вы хотите включить несколько опций.Другими словами, вы говорите, что вам нужны D3DFVF_XYZ и D3DFVF_DIFFUSE.

Возможно, несколько нелогично использовать «побитовое ИЛИ» для обозначения «И».Это артефакт того, как побитовая логика работает со значениями двоичных чисел.Вам не нужно знать фактические значения этих двух констант, но вы должны понимать, что они являются двоичными значениями, каждое из которых имеет один бит, равный единице (каждый использует другой бит).Когда вы используете оператор побитового ИЛИ для объединения значений, результирующее значение имеет оба установленных бита.Библиотека может легко оценить результат, чтобы определить, какие параметры вы хотите.Если бы вы использовали оператор «побитовое И» «&» вместо «побитовое ИЛИ», результат выражения был бы нулевым, передавая неверную информацию.

Это распространенный метод настройки программного обеспечения.библиотеки.

0 голосов
/ 04 октября 2010

m_pD3DDevice

Это, вероятно, данные-члены, тип которых является указателем (возможно, на класс с именем D3DDevice).

->

Это означает «разыменовать указатель»

SetFVF

Это метод-член (из класса D3DDevice).

D3DFVF_XYZ |D3DFVF_DIFFUSE

Это значение параметра (вероятно, пара битовых значений), переданное методу SetFVF.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...