ラベル VS2008 の投稿を表示しています。 すべての投稿を表示
ラベル VS2008 の投稿を表示しています。 すべての投稿を表示

2010年4月20日火曜日

VC++でアラインメントを指定する

Check
ビットマップ読み込み関連で失敗したのでメモ。
struct Hoge
{
    char c;
    int i;
};

上記の構造体サイズは理屈上は5バイトであるが、パディングされてるので実際には8バイトになっている。こいつを確実に5バイトにしたいときは#pragma pack命令を使う。
#pragma pack(push, 1)
struct Hoge
{
    char c;
    int i;
};
#pragma pack(pop)
1バイト単位でアラインメントを調整するので、結果としてパディングされないということになる。

サンプルコード
#include <stdio.h>

struct A
{
    char c;
    int i;
};

#pragma pack(push,1)
struct B
{
    char c;
    int i;
};
#pragma pack(pop)

int main()
{
    printf("sizeof A: %d\n", sizeof(A));// >> sizeof A: 8
    printf("sizeof B: %d\n", sizeof(B));// >> sizeof B: 5
    return 0;
}
バイナリでファイルを読み込むときに、使えそうなテクだ。
参考サイト

2010年4月13日火曜日

VC++のキーワードハイライト機能を拡張する

Check
VC++2008のお話。

"C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE"フォルダ下にある"usertype.dat"を開く。なければ作成。

登録したいキーワードを追加する。記述の仕方はいたって簡単で、ハイライトしたいキーワードを1行ずつ追加するだけ。以下の例はGLSLの組み込み型。
次にVCのメニューバーから"ツール"->"オプション"->"テキストエディタ"->"ファイル拡張子"を選択。追加したい拡張子と、編集用のエディタを選択する。
私の場合はバーテクスシェーダファイルは"vert"、ピクセルシェーダファイルは"frag"で登録しました。

最後にVCを再起動して終了。

これだけだとほかのブログにもあるので、さらに小ネタを追加。先ほど追加した"usertype.dat"ですが、新しい型が出てくるたびにフォルダから探して編集するのが面倒なので、ショートカットを作成しちゃいましょう。
最後にショートカットの"プロパティ"->"リンク先"をテキストエディタに変更して、もともとのリンク先はそのまま引数として使う。
画像の1番が追加する使用したいエディタへのパス。2番がもともと記述されていた"usertype.dat"へのパスです。ショートカットのアイコンがエディタのものに変わっていれば成功。このショートカットをデスクトップや、プロジェクトのディレクトリに放り込んでおけばいつでも1クリックで追加したい型を編集可能になります。