2009-07-13 46 views
8

Tôi có một dự án rất lớn với hàng tấn tập tin tiêu đề phức tạp mà tất cả đều bao gồm nhau. Ngoài ra còn có một số lượng lớn thư viện của bên thứ ba mà nó phụ thuộc vào. Tôi đang cố gắng loại bỏ sự lộn xộn, nhưng tôi đang gặp một số rắc rối, vì rất nhiều lần tôi sẽ xóa một chỉ thị #include chỉ để thấy rằng nội dung mà nó đã bao gồm vẫn được bao gồm thông qua một trong các tệp khác . Có công cụ nào có thể giúp tôi hiểu điều này không? Tôi thực sự muốn có thể nhấp vào một tập tin .h và yêu cầu nó CPP tập tin nó bao gồm trong (trực tiếp hoặc gián tiếp), và các đường dẫn mà nó được bao gồm, và tương tự như vậy bấm vào một tập tin cpp và yêu cầu nó. Các tệp h được bao gồm (trực tiếp và gián tiếp). Tôi chưa bao giờ nghe nói về một công cụ làm điều này, và một chút googling nhanh chóng đã không biến bất cứ điều gì lên, nhưng có lẽ tôi không biết những gì để tìm kiếm.C++ bao gồm trình duyệt tập tin

+0

Có một bài đăng tương tự tại đây: [http://stackoverflow.com/questions/74326/how-should-i-detect-unnecessary-include-files-in-a-large-c-project](http: //stackoverflow.com/questions/74326/how-should-i-detect-unnecessary-include-files-in-a-large-c-project) – Alex

Trả lời

4
+0

Tôi cảm thấy hơi xấu về việc giới thiệu một công cụ không có nguồn đóng miễn phí, nhưng đây là câu trả lời hay nhất cho câu hỏi của tôi. Nó làm khá nhiều thứ tôi cần, và nó không đắt lắm. Ông chủ của tôi quyết định mua giấy phép cho hầu hết các bộ phận. – rmeador

+0

Tôi chỉ là một người dùng ấn tượng! Tôi chưa mua giấy phép và tôi chỉ sử dụng nó trong thời gian dùng thử, nhưng cho đến nay nó vẫn rất hữu ích. –

3

nếu bạn sử dụng trình biên dịch GCC, hãy thử này

g++ -M abc.cpp 

nó sẽ hiển thị tất cả bao gồm phụ thuộc cho các tập tin abc.cpp

+0

Tôi đang sử dụng Visual Studio 2008. – rmeador

4

Đối với VS2003 có/showIncludes cờ (trong C++/tài sản C/nâng cao). Điều này sẽ in tất cả các tiêu đề mỗi tệp .cpp bao gồm và những gì chúng bao gồm, vì vậy bạn có thể đi từ đó.

Tôi chắc chắn có cùng một tùy chọn ở cùng một vị trí cho VS2008.

+0

điều này không tồn tại đối với VS2008, ở cùng địa điểm. có vẻ rất hứa hẹn. nó cũng cho tôi biết công việc của tôi khó khăn hơn nhiều so với giả định của tôi ... – rmeador

0

Tình huống của bạn nhắc tôi về chính mình. Tôi có một loạt các tiêu đề mà tôi đã tạo ra mà tôi sử dụng như một thư viện thay vì làm phiền với một DLL.

Tất nhiên cyclic-bao gồm có thể trở nên rắc rối, vì vậy tôi thấy rằng một công cụ như Visual Assist X(1) giúp với các loại điều này. Nó có một chức năng có thể tìm thấy các tham chiếu đến nội dung, để bạn có thể dễ dàng loại bỏ vị trí của một thứ gì đó đang được xác định/khai báo/bao gồm vv. Nó cũng có rất nhiều tính năng hữu ích khác, vì vậy tôi cho rằng nó khá hữu ích.

Có thể có các công cụ/plugin khác có chức năng tham chiếu, nhưng thường là một tính năng trong số các chức năng tái cấu trúc và năng suất khác của tiện ích.

HTH

0

Nó khá tẻ nhạt, nhưng bạn có thể tìm kiếm nhị phân theo cách của bạn đến nơi mà một #include xảy ra bằng cách sử dụng #error (và thông điệp #pragma) để thu hẹp trong đó bao gồm dòng là kéo ở bên thứ ba. Tôi đã làm điều này trong trường hợp của một tập tin duy nhất tôi đã cố gắng để theo dõi, nhưng nó có vẻ như vấn đề của bạn là lớn hơn vì vậy có lẽ một trong những công cụ người khác đã đề cập sẽ có hiệu quả hơn.

Các vấn đề liên quan