タグ

2022年7月8日のブックマーク (1件)

  • 括弧で34087重に囲んだ関数を食わせるとg++が死ぬ

    TL;DR ((((printf("Hello World\n")))))みたいに関数をたくさんの括弧で囲むとコンパイラが死ぬので気をつけましょう。 はじめに 以前、printfに4285個アスタリスクをつけるとclang++が死ぬという記事や、GCCに27958段ネストした関数をわせると死ぬという記事を書きました。 特に、printfにアスタリスクをたくさんつける記事では、clang++がわりとすぐ死んだのに対して、g++は5万個とかつけても大丈夫でした。一般に、コンパイラが死ぬ系のコンパイラいじめは、再帰でスタックを使い切るタイプのものが多く、LLVMよりもGCCの方が頑健という印象です。 さて、C++では、括弧を無駄につけることができます。例えば、

    括弧で34087重に囲んだ関数を食わせるとg++が死ぬ
    endo_5501
    endo_5501 2022/07/08
    “不意に「あー、関数を括弧で死ぬほど囲みたい。最低でも1万くらいは囲みたい」とおもったら、g++を使うと良い”