2011-10-30 38 views
9

Tôi sẽ phát điên khi tìm ra thông báo lỗi này không có kết nối rõ ràng với thực tế/mã của tôi. Tôi đã tìm kiếm ở đây và đi đến một kết luận: bạn sẽ ghét con trỏ bị ẩn bởi typedef. Xin lỗi, đó là ngoài tầm kiểm soát của tôi - prof cung cấp mã theo cách đó. Tôi đang chỉnh sửa mã như được chỉ định trong vấn đề. Tôi đang popping nút đầy đủ để tránh các cuộc gọi malloc trên mỗi chức năng đẩy và lưu trữ chúng trong một ngăn xếp thứ cấp. Hàm MakeEmptyS khởi tạo một Stack với các nút INITIAL_SIZE. GrowEmptyS thêm nhiều nút để Stack các nút rỗngC - biểu thức dự kiến ​​trước '=' mã thông báo ... trên dòng mà không '='

stack.c có chức năng sau:

void 
MakeEmptyS(Stack S) 
{ 
    PtrToNode tmp; 
    if (S == NULL) 
    Error("Must use CreateStack first"); 
    else 
    { 
    GrowEmptyS(S, INITIAL_SIZE); 
    while (!IsEmptyS(S)) 
    { 
     tmp = TopopNode(S); 
     PushEmpty(S, tmp); 
    } 
    } 
} 

tôi nhận được lỗi này: "Stack.c: 53: 22: lỗi: biểu dự kiến ​​trước khi '= 'token', trong đó dòng 53 là GrowEmptyS (S, INITIAL_SIZE);

Để tham khảo, đây là chức năng phát triển:

void 
    GrowEmptyS(Stack S, int NumToAdd) 
    { 
     int i; 
     PtrToNode TmpCell; 
     for(i = 0; i < NumToAdd; i++) 
     { 
     TmpCell = malloc(sizeof(struct Node)); 
     if (TmpCell == NULL) 
      FatalError("Out of Space!!!"); 
     else 
      PushEmpty(S,TmpCell); 
     } 
    } 
+0

Mặc dù giáo sư của bạn đã cung cấp cho bạn mã lỗi, bạn vẫn nên cố gắng đơn giản hóa nó trước khi đăng nó ở đây. Làm thế nào chúng ta phải gỡ lỗi cú pháp của 'GrowEmptyS (S, INITIAL_SIZE)' nếu bạn không cho chúng ta thấy định nghĩa của INITIAL_SIZE? Ngoài ra, GrowEmptyS là một macro tiền xử lý hoặc một hàm? Việc cung cấp một ví dụ ngắn, khép kín, chính xác (có thể biên dịch) sẽ giải quyết tất cả các câu hỏi này. Xem http://sscce.org/ –

+0

Bạn cũng nên biết cách 'INITIAL_SIZE' được xác định. –

+0

Xin lỗi vì không cung cấp định nghĩa INITIAL_SIZE. Như tôi đã nói, GrowEmptyS là một hàm. Nhưng lần tới tôi sẽ cung cấp nguồn đầy đủ, có khả năng tương thích. Cảm ơn! – TravisThomas

Trả lời

24

Tôi có thể sai nhưng có lẽ bạn đã định nghĩa

#define INITIAL_SIZE = 1024 

ví dụ.

Bạn nên xóa =.

Định nghĩa đúng sẽ là

#define INITIAL_SIZE 1024 

Như một lời khuyên, thông số chức năng nên bắt đầu với chữ thường, không phải trường hợp trên :)

void GrowEmptyS(Stack stack, int numToAdd) 

là dễ đọc hơn.

+0

Điều này rất có thể là nguyên nhân. –

+0

Yup :) điển hình. –

+0

Đó là nó. Cảm ơn! – TravisThomas

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