Public Notes

  • PPで死にかけた。

    昨日は、ビルドできないプロジェクトを脱却するべく、glsl_typeっという車輪の再発明もはなはだしいプロジェクトのビルドを通してました。glsl_typeとは、...簡単に言ってしまうとGLSLで使えるデータ型をC++でも使えるようにするヘッダオンリーなライブラリです。ソースコードは、githubにおいてあります。ちなみに、速度とかSIMDとかそうゆうのは、気にしたいのですが、どうにもわからないので放ってある自己満足なライブラリになっております。
    それで、なぜビルドできていなかったかというと、Boost.PPの使いすぎでコンパイラのチェックすら通過していなかったのです。原因はいくつかあるのですが、まず、クラス定義をPPで生成しているおかげで、エラーの箇所が全くわからないので、エラーメッセージの文脈から大体の場所を推測するしかありません。そして、使っているコンパイラにも問題がありました。
    clangはメタメタしたコードやPPピーしたコードのコンパイルエラーを直す時にあまり役に立ちません。親切が仇になっているというのでしょうか? デフォルトで設定では、表示されるエラーの数は少ないですし、エラーひとつに何行ものご親切な解説がつらいです。それに比べてgccは、すっきり・最小限・デフォルトでエラー数の上限なしの大変不親切仕様ですが、PPピーやメタメタしたコードの時は、大量のエラーを俯瞰することが大事なので大変役に立ちます。(それから、システムの都合でC++11のライブラリが動かしやすいのはとてもいいですね!)
    っと、まあそんな感じで、ビルドシステムを通さずにgccでコンパイルをした時の方が幸せでした。clangのエラーメッセージが天使に見えていた時期がわたしにもあったわけです。今はどちらかというとお節介かもしれません。コンパイラにも渡したフラグについてもけっこうウルサイですし。それと、PPピーした時は列が4桁になるなんてこともあるので、右端で折り返す設定になってるときは、どこがエラー箇所なのかホントにわからないです。
    最後に、エラーを取り除き終えた時には全く無意味なことをしていたと時間を浪費したと後悔しました。C++こわいです。
    orz
Copyright © Textt / GreenSpace