Visual Studio 2015でcppがどのヘッダーを見ているか確認・変更する方法はありますか


そうしたい理由というのは、現在あるクラス(class
Hogeとします)をシングルトンとしているのですが、「public:」の次の行の関数のみHoge.cppを参照し、以降の行はmain.cppを参照しているようなのです。定義に移動(F12)で確認しています。そのせいで「関数定義が見つかりません」と怒られます(なのにLINL2019エラーは出ないし実行もできる謎)。

もっと謎なのが、この問題が起こるクラスと起こらないクラスがあり、クラス名は違えど全く同様の記述でも起きるときと起こらないときがありますので謎は深まるばかりです。

また、シングルトンにしているクラス名は以下のようにdefineで定義したマクロを使用するようになっています。

[code]

    #define SINGLETON_CLASS(T) class T
    
[/code]

このマクロを使用せずclass Hogeとした場合は正常に動作しました。  
しかし諸事情によりこの仕様は必ずしなければならず、class Hogeと書けばよいでは済みません。というか、単にclass
Tに置き換えているだけなのになぜ問題が起きたりしたりしなかったりするのかも謎です。

題目の解決策としてクラスビュー(クラスダイアグラム)を使用してみましたが、問題の箇所がクラスビューに無いので確認が出来ていません。

【今まで試した解決策と結果】  
・プロジェクト丸々作り直し : 失敗  
・suoファイルの削除->再生成 : 失敗  
・関数の順番を変える : 失敗(結局public:次行のみ正常動作)  
・クラス名を変える : 失敗

上記諸々の事情があり、題目に至った次第です。  
よろしくお願いいたします。

* * *

@sayuri さん「現象が再現する範囲で可能な限り簡素化したコードを提示してもらえませんか」に対するコード提示

[code]

    //Hoge.h
    #define DEFINETEST(T) class T
    DEFINETEST(Hoge)
    {
        template <typename T>
        class HogeTemplate
        {
            //略
        };
    public:
        void TestFunc1();//この行は正常に関数定義を見る
        void TestFunc2();//この行以降では関数定義を見つけられない
    };
    //Hoge.cppはTestFunc1とTestFunc2関数しかないものとする
    
[/code]




F12で定義への移動に失敗するにもかかわらず、コンパイルには成功する点ですが、

>
[code]

>     #define SINGLETON_CLASS(T) class T
>  
[/code]

このコーディング規約が原因と思われます。コンパイラーはソースコードを忠実に解析しますが、IDEは解析速度とのバランスを考えて一部の解析を省略します。

[code]

    #define SINGLETON_CLASS class
    
[/code]

とコーディング規約を改訂するか、それが難しいのであればVisual Studio以外のエディタの使用を検討されてみてはどうでしょうか。

* * *

現象を確認できました。やはり指摘した通り、IDEが解析を端折っているだけです。

[code]

    // 質問の状況
    #define SINGLETON_CLASS(T) class T
    SINGLETON_CLASS(A) {};
    
    // 回答１ … 解決せず
    #define SINGLETON_CLASS class
    SINGLETON_CLASS A {};
    
    // 回答２ … 解析可能
    #define SINGLETON
    SINGLETON class A {};
    
[/code]

辺りにコーディング規約を改定してください（可能であれば）。できないのであれば諦めるか他のエディタを使用するといいでしょう。

