2013-07-19 8 views
5

makeコマンドで未使用の定義と構造体を見つけるためにどのような方法があり、の多くは、私が列挙型に変更しています文が定義されている、私はことを定義共通ファイル内の変数constにも変更されます。は私が再ファクタリングだ巨大なプロジェクトを持っている

私が再考しているうちに、の一部がの一部がサブクラスのヘッダーで繰り返されていることがわかりました。 いくつかは定義されており、構造体は使用されておらず、また使用されていませんでした。

コンパイラが使用していない変数を表示するときのように、どのようにコンパイラがそれらを指摘できますか?

私はそれらの乗り心地を取得したい、

は、今私はそれらをコメントアウトし、手動で必要とされているものを見つけます!他の方法はありますか?

+1

+1列挙型と定数に '#define'を変更しました。 – Manu343726

答えて

0

あまりにも大きい.hファイルに#define contantが嫌いです。そこで、私はC++型のシステムでcontantを定義する方法を見つけました。これは2年前の私の仕事でした。

------------------------------------------------------ 
id_system.h 
------------------------------------------------------ 
#pragma once 
template<int N> 
struct ID_FACTORY{ 
    enum {_ID=N}; 
    static const unsigned int m_duplicate_checker; 
}; 

#define ID_DECLARE(classname, number) \ 
struct classname{ \ 
    typedef ID_FACTORY<number> MYID_TYPE; \ 
    static const unsigned int ID; \ 
}; \ 
------------------------------------------------------ 
a.h 
------------------------------------------------------ 
#pragma once 
#include "id_system.h" 
ID_DECLARE(WM_MESSAGE_JJ,1003) 
ID_DECLARE(WM_MESSAGE_KK,1002) 
------------------------------------------------------ 
b.h 
------------------------------------------------------ 
#pragma once 
#include "id_system.h" 
ID_DECLARE(WM_MESSAGE_PP,2013) 
ID_DECLARE(WM_MESSAGE_TT,2014) 
ID_DECLARE(WM_MESSAGE_VV,2015) 

------------------------------------------------------ 
id_system.cpp 
------------------------------------------------------ 
#define ID_CHECKER(classname) \ 
const unsigned int classname::MYID_TYPE::m_duplicate_checker=classname::MYID_TYPE::_ID; \ 
const unsigned int classname::ID = classname::MYID_TYPE::m_duplicate_checker; \ 


#include "a.h" 
#include "b.h" 

ID_CHECKER(WM_MESSAGE_KK) 
ID_CHECKER(WM_MESSAGE_JJ) 
ID_CHECKER(WM_MESSAGE_PP) 
ID_CHECKER(WM_MESSAGE_TT) 
ID_CHECKER(WM_MESSAGE_VV) 

------------------------------------------------------ 
main.cpp 
------------------------------------------------------ 
#include "a.h" 
void main(){ 

    int x = WM_MESSAGE_KK::ID; 
    int y = WM_MESSAGE_JJ::ID; 
} 

利点: 1)それはmain.cppにのような重複したID 2)クライアントコードを()を検出することができる大きな.hファイルを含める必要はありません。 3)コンパイル時間が2分の1の依存関係の最小限の.hファイル

+0

しかし、未使用の構造体は検出できません – thomas

関連する問題