IntPtrからDelegate作成

OpenGLで垂直同期をオフにする方法を調べてたら見つけたのでメモ。

        public delegate bool wglSwapIntervalEXTDeleagte(int interval);

        public static wglSwapIntervalEXTDeleagte wglSwapIntervalEXT;

        public static void SetUpEXT()
        {
            if (GL.glGetString(GL.GL_EXTENSIONS).Contains("WGL_EXT_swap_control"))
            {
                IntPtr addr = WGL.wglGetProcAddress("wglSwapIntervalEXT");

                WGL.wglSwapIntervalEXT =
                    Marshal.GetDelegateForFunctionPointer(addr, typeof(WGL.wglSwapIntervalEXTDeleagte)) as WGL.wglSwapIntervalEXTDeleagte;
            }
        }

関数プロトタイプ

普段はC++ばかり使用していたので気づかなかったが、Cだと関数呼び出し時に引数の数が違っていてもエラーにしてくれない。


ソースコードから関数プロトタイプの一覧を作成する方法はないかと調べてみたらコンパイラオプションで/Zgというのを見つけた。
http://msdn.microsoft.com/ja-jp/library/y4s1adf3.aspx


削除予定のオプションなのが(´・ω・`)ショボーン

gcov

C言語カバレッジをするためのgcovとlcovのメモ。
テストしたのはcygwinで。


lcov
http://ltp.sourceforge.net/coverage/lcov.php


lcovのインストール

tar xzvf lcov-1.6.tar.gz
cd lcov-1.6
make install

カバレッジ用に実行ファイルを作成して実行

gcc -fprofile-arcs -ftest-coverage hoge.c
./a.exe
ls
a.exe hoge.c hoge.gcda hoge.gcno

カレントディレクトリにあるgcovの出力ファイルからinfoファイル作成

lcov -c -d . -o hoge.info
ls
a.exe hoge.c hoge.gcda hoge.gcno hoge.info

aaaディレクトリの下にhtml化

genhtml -o aaa hoge.info