Войти
ПрограммированиеФорумОбщее

Движок на Си (5 стр)

Advanced: Тема повышенной сложности или важная.

Страницы: 14 5 6 717 Следующая »
#60
20:54, 10 июня 2019

Vlad2001_MFS
> было бы
> DE_ARRAY_DECLARE(int) a;

Так вроде получше выглядит, да.


#61
21:06, 10 июня 2019

mr.DIMAS
Я у себя массив сделал так:

+ Показать

Я сейчас на твой код смотрю, как на эталон. Я думаю это заметно)

#62
(Правка: 21:39) 21:36, 10 июня 2019

Vlad2001_MFS
> Я у себя массив сделал так:
жесть какая то, не пишите больше код

#63
21:44, 10 июня 2019

u960
> жесть какая то, не пиши больше код
А по-подробнее? Про то, что в одну строку макросы можно не говорить - временно.

#64
21:56, 10 июня 2019

Vlad2001_MFS
Во первых это масло масленное, и новая сущность ради сущности. Во вторых зачем do..while

#65
22:00, 10 июня 2019

u960
> масло масленное
Не совсем понимаю.

> новая сущность ради сущности
Это про некоторый повторяющийся код в макросах? Если да, то чуть позже он будет убран.

> do..while
Просто привычка, даже не знаю откуда. Можно убрать.

#66
22:02, 10 июня 2019

u960
> Во вторых зачем do..while
Это гарантия от неправильной вставки макроса. Мощнее просто фигурных скобок.

#67
22:04, 10 июня 2019

u960
Кстати, благодаря gudleifr я вспомнил, что где-то как-то читал про do while в макросах. С тех пор и использую, но даже не задумываюсь об этом. Точно.

gudleifr
Спасибо.

#68
22:05, 10 июня 2019

gudleifr
> Это гарантия от неправильной вставки макроса. Мощнее просто фигурных скобок.
то есть конструкция do..while у нас ничего не стоит? Чтобы присвоить всего одной переменной значение надо обмазаться дувайлом?

#69
(Правка: 22:07) 22:06, 10 июня 2019

Vlad2001_MFS
> где-то как-то читал
Например, в С.Максвелл "Ядро Linux в комментариях".

u960
> то есть конструкция do..while у нас ничего не стоит?
Оптимизатор ее обычно режет.

#70
(Правка: 22:11) 22:07, 10 июня 2019

u960
> то есть конструкция do..while у нас ничего не стоит? Чтобы присвоить всего
> одной переменной значение надо обмазаться дувайлом?
Там можно убрать do..while без каких-лиюо проблем. Сделал для единообразия. Точно так же как и if-ы с однострочным телом заключаю в фигурные скобки.

gudleifr
> Например, в С.Максвелл "Ядро Linux в комментариях".
Нет, эту книгу я не читал, но уже скачал - заинтересовало.

#71
1:59, 11 июня 2019

u960
> жесть какая то, не пишите больше код
это не жесть какая-то, это Си такое-то.
(реально, весь код написанный на сях, вот такой - с макросами)

u960
> то есть конструкция do..while у нас ничего не стоит?
сейчас ковырял форк hexen. там тоже дофига do...while (и не то в защите макросов, но и просто вместо "(void)переменная" (эм, в сях не было такой фичи как???)

#72
7:55, 11 июня 2019

war_zes
> это не жесть какая-то, это Си такое-то.
> (реально, весь код написанный на сях, вот такой - с макросами)
Вот не надо вводить людей в заблуждение, ни кто не обмазывается макросами, пытаясь тем самым повторить массивы обьектами. Поэтому я и написал, что зачем была придумана новая сущность.Смотрю на код под рукой (zlib, psyq,quake-world) там такого ужаса нету.

> сейчас ковырял форк hexen. там тоже дофига do...while (и не то в защите
> макросов, но и просто вместо "(void)переменная" (эм, в сях не было такой фичи
> как???)
можно код, а то не понятно.

#73
8:13, 11 июня 2019

u960
> можно код, а то не понятно.
uhexen

#if id386 /* fpu stuff with x86 asm */
ASM_LINKAGE_BEGIN
void  MaskExceptions (void);
void  Sys_SetFPCW (void);
void  Sys_LowFPPrecision (void);
void  Sys_HighFPPrecision (void);
void  Sys_PopFPCW (void);
void  Sys_PushFPCW_SetHigh (void);
ASM_LINKAGE_END
#else
#define MaskExceptions()  do {} while (0)
#define Sys_SetFPCW()    do {} while (0)
#define Sys_LowFPPrecision()  do {} while (0)
#define Sys_HighFPPrecision()  do {} while (0)
#define Sys_PopFPCW()    do {} while (0)
#define Sys_PushFPCW_SetHigh()  do {} while (0)
#endif

#74
8:17, 11 июня 2019

u960
> Вот не надо вводить людей в заблуждение, ни кто не обмазывается макросами,
ну вот например из yquake2

#define DotProduct(x, y) (x[0] * y[0] + x[1] * y[1] + x[2] * y[2])
#define VectorSubtract(a, b, c)  \
  (c[0] = a[0] - b[0], c[1] = a[1] - b[1], c[2] =  \
   a[2] - b[2])
#define VectorAdd(a, b, c) \
  (c[0] = a[0] + b[0], c[1] = a[1] + b[1], c[2] =  \
   a[2] + b[2])
#define VectorCopy(a, b) (b[0] = a[0], b[1] = a[1], b[2] = a[2])
#define VectorClear(a) (a[0] = a[1] = a[2] = 0)
#define VectorNegate(a, b) (b[0] = -a[0], b[1] = -a[1], b[2] = -a[2])
#define VectorSet(v, x, y, z) (v[0] = (x), v[1] = (y), v[2] = (z))
Страницы: 14 5 6 717 Следующая »
ПрограммированиеФорумОбщее