[OpenGL] GLUTのコンストラクタをGNUの__attribute__で実装する
GLUTは,OSのAPIをまんまラップしているので,アプリケーションの起動時のタイミングや,終了時のタイミングを総じて捕まえて,初期化や,終了時の処理を実装するのが面倒くさい.
そこで,GNUに限ってだが,__attribute__を使って,擬似的なアプリケーション全体のconstructorと,destructorを呼び出して,擬似的にそれを実現する.
__attribute__((constructor)) void foo1( void ) { printf( "__attribute__ constructor is called\n" ); } __attribute__((destructor)) void foo2( void ) { printf( "__attribute__ destructor is called\n" ); }
こうすると,mainが呼び出される前,(多分)共有のライブラリがロードされた後に,foo1が実行される.
また,共有のライブラリがアンロードされる寸前にfoo2が実行される.
※最近,なんかのソースコードを読んでいて知ったんだが,これ知ってりゃ,楽なところいっぱいあったなぁ・・・.