2011-02-08 44 views
8

Tôi đang viết một ứng dụng C++ trong Visual Studio 2008. Nó có rất nhiều công trình quy định tại một số tập tin tiêu đề, chẳng hạn như:Tới Definition Thất bại - Visual Studio 2008

#pragma pack(push , 1)    // align on a 1-byte boundary 

typedef struct myStruct_tag 
{ 
    /* ... */ 
} myStruct_t; 

#pragma pack(pop)      // end 1-byte boundary alignment 

Trong một tập tin nguồn, những cấu trúc định nghĩa được sử dụng như vậy:

void MyFunc(void) 
{ 
    myStruct_t * myStruct = NULL; 

    myStruct = (myStruct_t *)malloc(sizeof(myStruct_t)); 

    /* and so forth and so on... */ 
} 

Mặc dù nó biên dịch thành công với 0 lỗi và 0 cảnh báo, thỉnh thoảng khi tôi kích chuột phải vào một kiểu dữ liệu tùy chỉnh (chẳng hạn như trong MyFunc) nó mang lại cho tôi một lỗi:

The symbol 'myStruct_t' is not defined.

Sau đó, tôi bấm OK để đóng hộp thoại và nhấn Ctrl + Alt + F7 để xây dựng lại các giải pháp. Nó xây dựng mà không có bất kỳ lỗi hoặc cảnh báo, vì vậy tôi biết rằng nó là tìm định nghĩa của myStruct_t khi nó biên dịch, nhưng nó không thể tìm thấy nó khi tôi cố gắng sử dụng Đi đến định nghĩa tính năng. Điều duy nhất xảy ra với tôi là ứng dụng này có rất nhiều cấu trúc được xác định, liên kết đơn byte, nhưng điều đó không tạo nên sự khác biệt. Có ai biết cách sửa lỗi này không?

Trả lời

9

Thử đóng giải pháp của bạn và sau đó xóa tệp * .sdf. Khi bạn mở lại giải pháp Intellisense của bạn sẽ bị buộc phải xây dựng lại cơ sở dữ liệu của nó và điều này có thể giải quyết vấn đề của bạn.

Edit: Cố định sai lầm chỉ

Chỉnh sửa 2: Đối với di sản, trong trường hợp bạn đang sử dụng Visual Studio 2008 hoặc cũ hơn, bạn nên xóa tất cả các file * .ncb.

+0

Điều này đã làm được điều này! Cảm ơn! –

+0

Trong Visual Studio 2010 không có tệp * .ncb; nó hiện đang sử dụng tệp * .sdf – Loghorn

+0

Lỗi của tôi. Tôi đang sử dụng VS2008. Tôi sẽ cập nhật OP cho phù hợp. –

1
  1. Chấm dứt quy trình studio trực quan. (Trong studio hình ảnh 2005, có thể cần xóa tất cả các tệp *.ncb khi quá trình studio trực quan bị giết)
  2. Mở lại giải pháp và làm sạch giải pháp: Build -> Clean Solution.
Các vấn đề liên quan