Баг компилятора при параметре шаблона = void* - страница 15

 

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

#define   POKE(t, i, b, n, v)     ( i & ((( ~ MASK( t, n )) << t( b )) | (( v & MASK( t, n )) << t( b ))))
 
Igor Makanu:

они не лишние! они помогают прочитать логику формирования этого выражения!

на скорость количество скобок влияет? - ну разве, что на скорость набора текста, но за этим никто не следит.... количество букаф которые настучал каждый юзер за день в инете яркий пример )))

Это гарантия безошибочных и быстрых доработок в будущем.

 
Dmitry Fedoseev:

Это гарантия безошибочных и быстрых доработок в будущем.

вот! хоть кто то может писать коротко и формализовано, я вечно все усложняю и пишу много букв... упс, ну вот опять )))

 
Ilya Malev:

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

Ещё один пример в копилку ненужности лишних скобок: в погоне за количеством ненужных скобок - упущены нужные

(( ~ MASK((t),(n))) << t( b ))
Так что скобки никакой такой гарантии не дают, а наоборот - расслабляют
 

Да не нужны там были вокруг t и n скобки - они не могли быть составными. Ладно, раз уж пошла такая пьянка, analyze this )))

#define B64(M,N)      (( N ) < 32                                                                                       \
                    ? (( N ) < 16                                                                                       \
                    ? (( N ) <  8                                                                                       \
                    ? (( N ) <  4                                                                                       \
                    ? (( N ) <  2                                                                                       \
                         ?                                                                                              \
                      (( N ) <  1 ? M##0  : M##1  )                                                                     \
                    : (( N ) <  3 ? M##2  : M##3  ))    : (( N ) <  6 ?                                                 \
                      (( N ) <  5 ? M##4  : M##5  )                                                                     \ 
                    : (( N ) <  7 ? M##6  : M##7  )))   : (( N ) < 12 ? (( N ) < 10 ?                                   \
                      (( N ) <  9 ? M##8  : M##9  )                                                                     \
                    : (( N ) < 11 ? M##10 : M##11 ))    : (( N ) < 14 ?                                                 \
                      (( N ) < 13 ? M##12 : M##13 )                                                                     \
                    : (( N ) < 15 ? M##14 : M##15 ))))  : (( N ) < 24 ? (( N ) < 20 ? (( N ) < 18 ?                     \
                      (( N ) < 17 ? M##16 : M##17 )                                                                     \
                    : (( N ) < 19 ? M##18 : M##19 ))    : (( N ) < 22 ?                                                 \
                      (( N ) < 21 ? M##20 : M##21 )                                                                     \
                    : (( N ) < 23 ? M##22 : M##23 )))   : (( N ) < 28 ? (( N ) < 26 ?                                   \
                      (( N ) < 25 ? M##24 : M##25 )                                                                     \
                    : (( N ) < 27 ? M##26 : M##27 ))    : (( N ) < 30 ?                                                 \
                      (( N ) < 29 ? M##28 : M##29 )                                                                     \
                    : (( N ) < 31 ? M##30 : M##31 ))))) : (( N ) < 48 ? (( N ) < 40 ? (( N ) < 36 ? (( N ) < 34 ?       \
                      (( N ) < 33 ? M##32 : M##33 )                                                                     \
                    : (( N ) < 35 ? M##34 : M##35 ))    : (( N ) < 38 ?                                                 \
                      (( N ) < 37 ? M##36 : M##37 )                                                                     \
                    : (( N ) < 39 ? M##38 : M##39 )))   : (( N ) < 44 ? (( N ) < 42 ?                                   \
                      (( N ) < 41 ? M##40 : M##41 )                                                                     \
                    : (( N ) < 43 ? M##42 : M##43 ))    : (( N ) < 46 ?                                                 \
                      (( N ) < 45 ? M##44 : M##45 )                                                                     \
                    : (( N ) < 47 ? M##46 : M##47 ))))  : (( N ) < 56 ? (( N ) < 52 ? (( N ) < 50 ?                     \
                      (( N ) < 49 ? M##48 : M##49 )                                                                     \
                    : (( N ) < 51 ? M##50 : M##51 ))    : (( N ) < 54 ?                                                 \ 
                      (( N ) < 53 ? M##52 : M##53 )                                                                     \
                    : (( N ) < 55 ? M##54 : M##55 )))   : (( N ) < 60 ? (( N ) < 58 ?                                   \
                      (( N ) < 57 ? M##56 : M##57 )                                                                     \
                    : (( N ) < 59 ? M##58 : M##59 ))    : (( N ) < 62 ?                                                 \
                      (( N ) < 61 ? M##60 : M##61 )                                                                     \
                    : (( N ) < 63 ? M##62 : M##63 ))))))  

Потом я правда с тоской обнаружил, что ( long( 1 ) << N ) работает в 2 раза быстрее, но не в этом суть )

 
A100:

Ещё один пример в копилку ненужности лишних скобок: в погоне за количеством ненужных скобок - упущены нужные

Что-то Вы там больно много скобок пометили "ненужными". Если поставить целью убрать столько скобок, сколько только можно, чтобы компилятор не начал ругаться, то возможно Вы правы, но такая цель не стоит, когда кто-то хочет написать код, который будет с первого взгляда максимально понятен и ему, и другим (особенно учитывая подсветку парных скобок в редакторе).

 
Ilya Malev:

analyze this )))

void f()
{
        ulong x = B64( ,3); //Error
}

Ошибка при компиляции. А что ожидалось?

 
A100:

Ошибка при компиляции. А что ожидалось?

Это просто для красоты я выложил. К этому дефайну прилагается ещё 128 дефайнов чтобы оно работало, но лучше я пощажу читателей ветки )))

 
Igor Makanu:

они не лишние! они помогают прочитать логику формирования этого выражения!

Ну если вам помогают, то бог с вами.  Только речь в вашем посте шла о "краткости - сестре таланта".  Вот я спрашиваю, как это высказывание можно это сочетаться с обилием избыточных скобок.  Мне вот они не нужны для понимании логики. Выходит, что я более талантлив? )
 
Alexey Navoykov:
Мне вот они не нужны для понимании логики. Выходит, что я более талантлив? )

Ещё один гол в ворота адептов: да мы их побеждает с разгромным счётом )

Причина обращения: