2011-08-09 89 views
1

我試圖運行使用的XCode其中鍵入下面編譯使用的XCode

1) #include <stdio.h> 
2) int main() 
3) { 
4)  printf("Hello, World!\n"); 
5)  func(); 
6)  return 0; 
7) } 
8) void func() 
9) { 
10) printf("xxxx"); 
11) } 

在行號5我收到警告一個非常簡單的C程序的C程序「FUNC隱的聲明是在C99無效」和在行8號我收到一個錯誤「衝突的類型FUNC」

請指教 感謝,

回答

2

你需要使用它(主)之前聲明func();添加void func();,否則它被聲明爲返回int功能,當編譯器到達8號線,它看到一個不同的聲明與返回void相同的函數。

#include <stdio.h> 
void func(void); 
int main() 
0

你聲明或定義之前調用func(),這就是原因。

前主

1

那麼,錯誤消息告訴你到底什麼是錯的。正在使用的函數必須首先聲明,無論是在相同的源代碼單元中,還是在頭文件中。

如果func()尚未聲明,則編譯器假定結果爲int

的第一個錯誤說,你在使用它之前應該聲明func()

void func(void); 

int main() 
{ 
    etc...  

第二個錯誤告訴你func()不返回畢竟int。如果您先申報了func(),那麼這兩個錯誤都不會發生。

+0

感謝球員......還沒有和C打過很長時間...... – devaditya

+0

那麼,在舊的,真正老的C中,這是沒有必要的,IIRC。 –