有没有办法在make命令中找到未使用的定义和结构

时间:2013-07-19 15:05:46

标签: c++ struct refactoring unused-variables

我有一个庞大的项目,我正在重新分解,有很多定义语句,我正在改为枚举,定义我也在改为公共文件中的 const 变量。

当我重新分解时,我发现在子类标题中重复了一些定义。 一些定义,结构甚至没有使用或习惯。

如何让编译器指出它们,就像编译器显示未使用的变量一样?

我想骑他们,

现在我将它们评论出来,并手动找到需要的东西!还有其他方式

1 个答案:

答案 0 :(得分:1)

我讨厌在一个大的.h文件中加入#define。所以,我找到了一种通过C ++类型系统定义内容的方法。这是我两年前的工作。

------------------------------------------------------
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)它可以检测重复的id 2)客户端代码(如main.cpp)不需要包含大的.h文件。 3)编译时间大大减少到最小的依赖.h文件