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
Trả lời
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
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. –
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
Tôi đang sử dụng Visual Studio 2008. – rmeador
Đố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.
đ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
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
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.
- 1. C++ tập tin tiêu đề bao gồm lẫn nhau
- 2. không mở Có thể bao gồm tập tin "d3dx9.h"
- 3. Bao gồm .cpp ở cuối tập tin tiêu đề mẫu
- 4. Bao gồm trong tập tin tiêu đề vs forward-kê khai, bao gồm trong cpp
- 5. Sử dụng #define để bao gồm một tập tin trong C++/C
- 6. Bao gồm một tập tin tài sản với một tập tin Jar
- 7. Bao gồm một tập tin bên ngoài trong vợt
- 8. không bao gồm các tập tin cần thiết vào omimompletion
- 9. bao gồm các tập tin đệ quy trong Cocoapods podspec
- 10. bao gồm tập tin .php trong thư mục trên
- 11. Không thể mở tập tin bao gồm config.h
- 12. Asset Pipeline: không bao gồm một tập tin admin.css
- 13. "Bao gồm" một javascript tập tin với nhau
- 14. Bao gồm tập tin trong một dòng lệnh với Ruby
- 15. HTML JavaScript Bao gồm Phạm vi Biến Tập tin
- 16. Bao gồm một tập tin .js trong Node.js
- 17. ASP.Net Tải tập tin xuống trình duyệt của khách hàng
- 18. Tập tin tiêu đề C - Cách chính xác để bao gồm
- 19. C++ bao gồm vấn đề
- 20. KHÔ lưu các tập tin js.erb (bao gồm một tập tin js.erb)
- 21. lỗi tập tin bao gồm (C++): tài liệu tham khảo không xác định để ______
- 22. Selenium WebDriver và trình duyệt chọn hộp thoại tập tin
- 23. Đọc có bao gồm các tập tin làm chậm tải tập lệnh php không?
- 24. cl.exe không tìm thấy bất kỳ tiêu chuẩn bao gồm tập tin
- 25. Sử dụng Rsync bao gồm và không bao gồm tùy chọn để bao gồm thư mục và tập tin bằng mẫu
- 26. Truyền đầu ra vào một tập tin và trình duyệt
- 27. trình duyệt tập tin mở sử dụng jquery
- 28. Làm thế nào để bao gồm các mô-đun nodejs trong các tập tin html?
- 29. Trình tự javascript bao gồm trong Orchard
- 30. Bao gồm tệp .cpp?
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