2012-10-29 49 views
5

Sau hai năm C#, tôi đã thử C và tôi có một số lỗi "noob".Không tìm thấy số nhận dạng?

tôi đã cố gắng để đảo ngược một mảng với đệ quy, và tôi có lỗi này:

error C3861: 'Rekurzija' indentifer not found

đây là mã của tôi:

#include "stdafx.h" 
#include "stdio.h" 

int main() 
{ 
    int niz[] = {1,2,3,4,5,6}; 
    int duzina = sizeof(niz)/sizeof(int); 
    printf("%s",niz[Rekurzija(duzina)]); 
    getchar(); 
} 

int Rekurzija(int niz) 
{ 
    int i = sizeof(niz)/sizeof(int); 
    while(i!=0) 
     return Rekurzija(i-1); 
} 
+1

@irabaxter: bạn đã chỉnh sửa lỗi chính tả trong tiêu đề bằng lỗi đánh máy khác :) – Wug

+0

@Wug: Vui mừng * ai đó * đang chú ý. Cảm ơn. –

Trả lời

5

Trong C bạn nên có prototype hàm được liệt kê trước khi chức năng gọi nó.

Vì vậy, bạn nên thêm những điều sau đây sau khi bạn bao gồm:

int Rekurzija(int niz);

Chú ý rằng nếu không có một nguyên mẫu, mọi thứ vẫn có thể làm việc; trình biên dịch sẽ làm cho một đoán cho nguyên mẫu nhưng vấn đề sẽ phát sinh nếu đoán là khác với những gì chức năng của bạn thực sự là.

6

Trong C, mọi thứ phải được khai báo trước khi được sử dụng. Vì vậy, bạn phải thêm một tuyên bố cho Rekurzija trước khi chính:

int Rekurzija(int); 

Điều này chỉ nói với trình biên dịch rằng khi nó gọi Rekurzija gọi sau, đó là một cuộc gọi hàm int và trả về một int. Đó là tất cả những gì cần để xử lý cuộc gọi, định nghĩa có thể ở một nơi khác, như dưới đây chính trong trường hợp của bạn, hoặc thậm chí trong một tệp khác, như là rất phổ biến (delcaration trong tệp .h và định nghĩa trong tệp .c) .

+0

haha ​​CÔNG TRÌNH này !!! Cảm ơn các bạn .. :) – DocNet

+0

Không sao cả. Hãy nhớ đóng câu hỏi khi bạn hoàn thành (tức là đánh dấu một trong các giải pháp). – amaurea

1

Trong C, bạn phải khai báo các thực thể trước khi bạn tham khảo chúng.

Bạn cần phải thêm:

int Rekurzija(int niz); 

nói với trình biên dịch rằng Rekurzija tồn tại, và những loại thuộc tính nó đã (ví dụ, nó là một hàm với tham số int và kết quả) như một lời tuyên bố "chuyển tiếp" trước chức năng chính của bạn.

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