2012-10-29 188 views
5

經過兩年的C#,我嘗試了C,我有一些「noob」錯誤。標識符未找到?

我試圖扭轉遞歸的數組,我有這樣的錯誤:

error C3861: 'Rekurzija' indentifer not found

這是我的代碼:

#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:你在標題中編輯了另一個打字錯誤:) – Wug

+0

@Wug:很高興*有人*正在關注。謝謝。 –

回答

5

在C,你應該具備的功能之前列出的函數原型這叫它。

所以,你應該添加以下的包括後:

int Rekurzija(int niz);

注意,無需原型,事情還可能工作;編譯器會對原型進行猜測,但如果猜測與您的函數真的不同,則會出現問題。

6

在C中,所有東西都必須在使用之前聲明。所以,你必須之前主要增加對Rekurzija聲明:

int Rekurzija(int); 

這只是告訴時,看到的Rekurzija打過去了,這是一個函數調用採取一個int並返回一個int編譯器。這就是處理調用所需要的全部內容,定義可以在其他地方,比如在你的情況下,或者甚至在另一個文件中,這是非常常見的(在.h文件中解析和在.c文件中定義) 。

+0

哈哈這個作品!謝謝你們.. :) – DocNet

+0

沒問題。請記住在完成後關閉問題(即勾選其中一個解決方案)。 – amaurea

1

在C中,您必須在引用它們之前聲明實體。

您需要添加:

int Rekurzija(int niz); 

告訴Rekurzija存在的編譯器,以及什麼樣的性能已經(例如,它是int參數和結果的函數)爲「前進」的聲明在您的主要功能之前。