2013-07-19 41 views
5

tôi có một dự án khổng lồ mà tôi đang tái bao thanh toán, có rất nhiều xác định tuyên bố rằng tôi thay đổi để enums, xác định rằng tôi cũng thay đổi thành các biến số const trong một tệp chung.là có cách nào để tìm định nghĩa không sử dụng và cấu trúc trong thực hiện lệnh

trong khi tôi đã tính lại, tôi thấy rằng một số số xác định được lặp lại trong tiêu đề của lớp con. một số định nghĩa và cấu trúc thậm chí không được sử dụng hoặc đã từng sử dụng.

cách tôi có thể làm cho trình biên dịch trỏ chúng ra, như khi trình biên dịch hiển thị các biến không sử dụng?

Tôi muốn được đi xe của họ,

ngay bây giờ tôi nhận xét họ ra, và tìm thấy những gì là cần thiết bằng tay! có cách nào khác không:

+1

+1 để thay đổi '# define' thành enums và hằng số. – Manu343726

Trả lời

0

Tôi ghét #define contant trong một tệp .h lớn. vì vậy, tôi tìm cách xác định contant bằng hệ thống kiểu C++. đây là công việc của tôi cách đây hai năm.

------------------------------------------------------ 
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; 
} 

lợi thế: 1) Nó có thể phát hiện trùng lặp id mã 2) khách hàng (như main.cpp) không cần phải bao gồm một file .h lớn. 3) thời gian biên dịch giảm rất nhiều bộ đôi thành phụ thuộc nhỏ nhất .h tập

+0

nhưng, nó không thể phát hiện cấu trúc không sử dụng – thomas