模板参数=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周围加上括号--它们不可能是复合的。好吧,既然我们有这样一个节日的谈话,让我们考虑一下这个)))

#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:

(我不确定这一点))

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

一个编译时的错误。预期的是什么?

 
A100:

这是一个编译错误。预期的是什么?

这只是为了它的美丽。这个定义还附加了128个定义,才能发挥作用,但我还是要让分支的读者们省心)))。

 
Igor Makanu:

它们不是多余的!它们有助于阅读这个表达方式背后的逻辑。

好吧,如果他们帮助你,那么上帝与你同在。 只是你的帖子是关于 "简洁是才华的姐妹"。 所以我在问这句话如何能与大量的多余的括号结合起来。 我不需要他们来理解这个逻辑。这是否意味着我更有天赋?)
 
Alexey Navoykov:
我不需要他们来理解逻辑。这是否使我更有才华?)

Adepts的另一个目标:是的,我们以压倒性优势击败了他们)。