есть ли способ найти неиспользуемые определения и структуры в команде make

У меня есть огромный проект, который я рефакторинг, есть много определять заявления, которые я изменяю на перечислений, определяет, что я тоже меняюсь на Const переменные в общем файле.

в то время как я рефакторинг я обнаружил, что некоторые из определяет были повторены в заголовке подклассов.
некоторые из определений и структур даже не использовались или не использовались.

как я могу заставить компилятор указывать на них, например, когда компилятор показывает неиспользуемые переменные?

Я хочу прокатиться на них,

щас закомментирую их и найду что нужно вручную! есть ли другие способы

5

Решение

Я тоже ненавижу #define contant в одном большом файле .h. Итак, я нахожу способ определить константу с помощью системы типов 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

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]