2010-12-27 55 views
5

Tôi đang làm việc trên một cơ sở mã khá lớn có một chút ma thuật #ifdef đang diễn ra. Tôi đang xem một tệp và cố gắng xác định loại được xác định. Thật không may, nó bao gồm nhiều tệp, bao gồm nhiều tệp, bao gồm nhiều tệp, v.v. một số tệp xác định các macro ảnh hưởng đến định nghĩa nào bạn có thể sử dụng. Cấu trúc này phức tạp đến mức sau 10 phút giá trị của việc grepping và theo các chuỗi bao gồm, tôi vẫn không biết định nghĩa nào đang được sử dụng. Tôi nhớ rằng studio trực quan có một tính năng đẹp, nơi tôi có thể nhấp chuột phải vào loại và nó sẽ hiển thị nơi loại được xác định. Có một công cụ tốt đẹp tương đương cho Linux mà đọc làm cho các tập tin, vv? Tôi chắc chắn có, nhưng tôi vẫn chỉ sử dụng vim + grep cho môi trường phát triển của tôi.Xác định loại được xác định

+0

Tại sao không sử dụng gdb, nếu đó là một lựa chọn, bởi vì tôi không nghĩ vim có một tùy chọn như VS trừ khi thêm vào tồn tại ở đâu đó? Sử dụng một IDE như NetBeans. Câu hỏi liên quan, không phải là một bản sao http://stackoverflow.com/questions/559274/any-program-or-trick-to-find-the-definition-of-a-variable – DumbCoder

+0

Thay vì lãng phí thời gian và công sức theo dõi định nghĩa của biến đó bạn luôn có thể chi tiêu tốt hơn các nguồn lực của bạn lên kế hoạch giết người của người đã làm nó. –

Trả lời

4

Với định nghĩa và phụ thuộc phức tạp, tính năng này không phải lúc nào cũng hoạt động trong Visual Studio.

Giải pháp: yêu cầu trình biên dịch của bạn đổ mã sau khi được xử lý trước, yêu cầu in #line và #file chỉ thị quá. Tìm kiếm thông qua tệp kết quả cho loại của bạn, sau đó nhìn vào chỉ thị #file gần nhất để xem nó xuất phát từ đâu.

(Trong GCC bạn có thể sử dụng công tắc -E)

+0

Điều này hiệu quả. Và bạn nói đúng, cách nào tốt hơn để phân tích cú pháp tất cả các macro tiền xử lý so với bộ tiền xử lý? –

+0

Đôi khi việc viết một chương trình ngắn bằng cách sử dụng cùng các tùy chọn & thư viện giống như dự án của bạn và tận dụng bất kỳ thói quen chương trình nào (nếu có) để giúp xác định định nghĩa của cấu trúc được sử dụng. – Sparky

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