GameProgrammar's Night

ゲームプログラム系の覚え書き

VS2012のIntelliSenseを確実に効かす方法

プリコンパイル対象ヘッダを全ソース共通ヘッダとして使わない

 横着な自分はプリコンパイル対象ヘッダを全ソース共通ヘッダとして使っていたのですが、プリコンパイル対象ヘッダはIntelliSenseの解析対象外のようです。
 なので、共通ヘッダは別に作って、共通ヘッダをプリコンパイル対象ヘッダでincludeするという方法にします。

// 共通ヘッダ common.h
#include <windows.h>
#include <d3d9.h>

を書いて、common.h をどっかのソースファイルでincludeすれば、IntelliSense対象になります。
 一方、プリコンパイル対象ヘッダは共通ヘッダをincludeするだけにします。

// プリコンパイル対象ヘッダ stdafx.h
#include "common.h"

ヘッダの最後には改行を入れる

 特定のヘッダをincludeすると、IntelliSenseがちゃんと動かなくなる時があります。その時は、ヘッダの最後に改行が無いことが多いです。

// とあるヘッダ toaru.h
#pragma once

namespace toaru{
 // いろいろ定義
} // 最後が改行で終わって無い!

 これだと、IntelliSenseがこけることが良くあります。こういう時は改行を入れます。

// とあるヘッダ toaru.h
#pragma once

namespace toaru{
 // いろいろ定義
} // 最後↓が改行で終わっている

 IntelliSenseの動作は、おそらくincludeを解決したソースファイルで解析してるんじゃないかなー、と思います。そのため、続く文字との間にスペースが無いために、IntelliSenseのパースが転けることがあるのかなと。
 もちろん、ヘッダの最後に改行が無くても、コンパイルは問題なくできます。