Войти
ФлеймФорумПрограммирование

Общие вопросы по программированию (74 стр)

Страницы: 173 74 75 76141 Следующая »
#1095
11:29, 30 янв. 2020

Есть кодяра:

struct
{
  ...
  volatile bool running;

} window;

Если поле window.running волатайл, значит ли это,
что вся структура window автоматически становится волатайл?


#1096
11:42, 30 янв. 2020

nes
Если бы она вся стала, то и присваивания всем полям стали обязательны. А так - только одно поле. Но если всю структуру целиком присваивать то семантика будет volatile.

#1097
12:10, 30 янв. 2020

kipar
Так если поле в структуре волатайл, а структура нет, компиль может там чего-то выкинуть при оптимизации?

#1098
(Правка: 12:24) 12:23, 30 янв. 2020

nes
Не используй волатайл, ты все равно не знаешь, для чего он нужен

#1099
12:30, 30 янв. 2020

return [](){};
От тебя пользы на форуме, как от Роники.

#1100
12:39, 30 янв. 2020

nes
volatile в контексте многопоточности не означает ничего (не создает барьера, не дает атомарности), но он гарантирует что запись или чтение в это поле компилятор не имеет права выкинуть т.к. оно создает внешний эффект.
Например это адреса периферии в микроконтроллерах.

#1101
12:41, 30 янв. 2020

kipar
Ок, вроде понял, благодарствую.

#1102
(Правка: 12:52) 12:48, 30 янв. 2020

nes
> Какие математика-векторы в ваших энжинах?
https://docs.microsoft.com/ru-ru/windows/win32/dxmath/directxmath-portal
https://glm.g-truc.net/0.9.9/index.html

Этого для пет-проджекта хватит за глаза. На разработку собственного модуля, как в больших, коммерческих проектах, где к разработке привлечены десятки программистов, не хватит ни времени, ни энтузиазма, даже при наличии достаточного уровня знаний.
Свою математику имеет смысл пилить только как отдельный проект и все свободное время уделять ему, чтобы на выходе получилась мало-мальски юзабельная вещь, с тестами и без багов. И не факт что она получится лучше общеизвестных аналогов.

#1103
12:49, 30 янв. 2020

totoro
Это я все и сам могу написать, вопрос был в организации структуры данных,
а не в математике.

#1104
(Правка: 13:01) 13:00, 30 янв. 2020

nes
> вопрос был в организации структуры данных,
> а не в математике.
Ну вот как организовано в вышеприведенных библиотеках, например.

#ifdef __cplusplus
typedef struct D3DXVECTOR3 : public D3DVECTOR
{
public:
    D3DXVECTOR3() {};
    D3DXVECTOR3( CONST FLOAT * );
    D3DXVECTOR3( CONST D3DVECTOR& );
    D3DXVECTOR3( CONST D3DXFLOAT16 * );
    D3DXVECTOR3( FLOAT x, FLOAT y, FLOAT z );

    // casting
    operator FLOAT* ();
    operator CONST FLOAT* () const;

    // assignment operators
    D3DXVECTOR3& operator += ( CONST D3DXVECTOR3& );
    D3DXVECTOR3& operator -= ( CONST D3DXVECTOR3& );
    D3DXVECTOR3& operator *= ( FLOAT );
    D3DXVECTOR3& operator /= ( FLOAT );

    // unary operators
    D3DXVECTOR3 operator + () const;
    D3DXVECTOR3 operator - () const;

    // binary operators
    D3DXVECTOR3 operator + ( CONST D3DXVECTOR3& ) const;
    D3DXVECTOR3 operator - ( CONST D3DXVECTOR3& ) const;
    D3DXVECTOR3 operator * ( FLOAT ) const;
    D3DXVECTOR3 operator / ( FLOAT ) const;

    friend D3DXVECTOR3 operator * ( FLOAT, CONST struct D3DXVECTOR3& );

    BOOL operator == ( CONST D3DXVECTOR3& ) const;
    BOOL operator != ( CONST D3DXVECTOR3& ) const;

} D3DXVECTOR3, *LPD3DXVECTOR3;

#else //!__cplusplus
typedef struct _D3DVECTOR D3DXVECTOR3, *LPD3DXVECTOR3;
#endif //!__cplusplus

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

> 3. Убешненько
Это почему?

#1105
13:02, 30 янв. 2020

totoro
У майкрософт там убэ убой погоняет.

#1106
13:05, 30 янв. 2020

nes
Стандарт гарантирует, что адрес первого элемента POD-структуры будет совпадать с адресом самой структуры, в чем UB?

#1107
13:05, 30 янв. 2020

totoro
УБ в пространстве между полями, которое может быть больше 0 байт.

#1108
13:17, 30 янв. 2020

nes
> УБ в пространстве между полями, которое может быть больше 0 байт.
У производителей компиляторов выравнивание строго регламентировано документацией. А с введением С++11 появились дополнительные возможности регулировать выравнивание средствами языка.

#1109
(Правка: 18:54) 18:54, 30 янв. 2020

totoro
> выравнивание
Он про паддинг. Разницу могу объяснить.

Страницы: 173 74 75 76141 Следующая »
ФлеймФорумПрограммирование