テンプレート・パラメータ = void* のコンパイラ・バグ - ページ 15

 

何でもかんでもケチをつけるのが好きなあなたに「正しい」定義がここにあります)))

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

余計なものではありません!表現がどのように形成されるかの論理を読み取るのに役立ちます

括弧の数はスピードに影響しますか?- タイピング速度に影響しない限り、誰も見ていないのですが...。ウェブ上で各ユーザーが1日に入力する括弧の数は、その典型例です ))))

これは、今後のエラーフリーと迅速な補正を保証するものです。

 
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:

コンパイルエラーだったのです。何が期待されていたのでしょうか?

ただ、その美しさのためです。このdefineが動作するためには、さらに128のdefineが付随していますが、ブランチの読者には割愛させていただきます )))

 
Igor Makanu:

この表現の背後にある論理を読み解くのに役立つのです。

そのような場合、「簡潔は才能の妹」である。 だから私は、この文と過剰な括弧をどのように組み合わせることができるかを尋ねているのだ。 論理を理解するために括弧は必要ないのだ。私の方が才能があるということでしょうか。)
 
Alexey Navoykov:
論理を理解するのに必要ない。それは、私の才能を高めることになるのでしょうか?)

アデプトのもう一つの目標:そう、圧倒的に勝っているのです(笑)。