c++ - 有什么方法可以在 make 命令中找到未使用的定义和结构

标签 c++ struct refactoring unused-variables

我有一个巨大的项目,我正在重构,有很多 define 语句我正在更改为 enums,defines 我也正在更改为const 普通文件中的变量。

当我重构时,我发现一些定义在子类标题中重复了。 一些定义和结构甚至没有被使用过,或者曾经被使用过。

我怎样才能让编译器指出它们,比如当编译器显示未使用的变量时?

我想骑他们,

现在我把它们注释掉,然后手动找到需要的东西!还有其他方法吗

最佳答案

我也讨厌在一个大的.h 文件中使用#define contant。所以,我找到了一种通过 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文件最小,编译时间大大减少

关于c++ - 有什么方法可以在 make 命令中找到未使用的定义和结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17749433/

相关文章:

c++ - C++ 中 "rich type"结构的开销

c - 使用指向从函数返回的结构的指针

java - 指定情况下如何处理变量的初始化

java - 将正则表达式模式重构为 Java flavor 模式

c++ - 声明指向结构的指针后的值是多少

c++ - 了解基本代码分析

c++ - OpenCV:寻找 CPU 密集度较低的帧捕获+调整大小并进入缓冲方式:如何优化我的代码?

c++ - 使用递归和乘法将 C 代码转换为 MIPS 问题

c++ - 指向抽象类的指针的函数重载

c++ - 通过非 unicode 代码读取 UTF-8 Unicode 文件