2009-05-26 11 views
10

Cảnh báo này được kích hoạt nhiều lần trong mã của tôi bằng cách tuyên bố tương tự, mà đọc:Làm thế nào tôi có thể loại bỏ các C4091 cảnh báo VS: 'typedef': bỏ qua trên bên trái của 'bảng tính' khi không có biến được khai báo

// Spreadsheet structure 
typedef struct SPREADSHEET 
{  
     int ID;    // ID of the spreadsheet  
     UINT nLines;   // Number of lines 

     void CopyFrom(const SPREADSHEET* src) 
     { 
      ID = src->ID; 
      nLines = src->nLines; 
     } 
}; 

Tôi không muốn tắt cảnh báo đó,

mà đúng hơn là thay đổi mã để cảnh báo không xuất hiện!

LƯU Ý: Tôi không muốn khai báo bất kỳ biến ở đây (đó là một tập tin tiêu đề), chỉ xác định những gì các struct 'bảng tính' nên bao gồm ...

Trả lời

20

Xóa typedef. Đó là cách C tuyên bố các cấu trúc, C++ tự động làm điều đó cho bạn.

+0

Điều này cũng sẽ không hoạt động trong C. – sth

5

Bạn cần phải thêm một số nhận dạng trước khi chấm dứt ; , ví dụ:

typedef struct BLAH { ... } BLAH; 
4

Chỉ cần xóa "typedef". Bạn khai báo cấu trúc mới và từ khóa typedef không được sử dụng cho cấu trúc đó. Bạn sẽ sử dụng typedef để xác định một tên mới cho một loại tồn tại, như thế này:

typedef int number; 
0

Vâng, BLAHsau nẹp đóng cửa là rất quan trọng để làm cho typedef một hợp lệ. Bạn có thể xóa SPREADSHEET khỏi vị trí hiện tại và giữ nó ở giữa };.

+0

Điều đó nên được để lại dưới dạng nhận xét, vui lòng kiếm được danh tiếng bắt buộc bằng cách hỏi và trả lời câu hỏi và xem lại [FAQ] (http://stackoverflow.com/faq). –

0

Giải thích của tôi về cảnh báo này là trình biên dịch chỉ ra rằng từ khóa typedef là không cần thiết vì một biến không được khai báo. và do đó nếu ý định của mã chỉ đơn giản là khai báo một số struct thì typedef là thừa.