2012-02-26 35 views
-1

我使用的Xcode 4.1在Mac OS 10.7隱聲明

#include <stdio.h> 
int main (int argc, const char * argv[]) 
{ 
int i, j; 
i = 1; 
j = 9; 
printf("i = %d and j = %d\n", i, j); 

swap(&i, &j); 
printf("\nnow i = %d and j = %d\n", i, j); 


return 0; 
} 

swap(i, j) 
int *i, *j; 
{ 
int temp = *i; 
*i = *j; 
*j = temp; 
} 

我得到警告「功能的隱式聲明 「交換」 是C99

+0

什麼是你的問題? – 2012-02-26 13:49:34

+1

可能重複[什麼是「隱式聲明的函數」是什麼意思?](http://stackoverflow.com/questions/2161304/what-does-implicit-declaration-of-function-mean) - 請使用之前的搜索你問一個新問題。 – 2012-02-26 13:50:36

回答

1

失效前主聲明你的函數:

void swap(int *i, int *j); 

/* ... */ 
int main... 

,以後再定義它:

void swap(int *i, int *j) 
{ 
    /* ... */ 
} 

或者,您可以合併這兩個並在main之前移動整個定義。

0

函數名稱必須在C99中使用之前聲明。

您可以在main之前定義您的swap函數,也可以在main之前聲明該函數。

此外,您正在使用swap函數的舊式函數定義。這種形式是一個C過時的功能,這裏是你應該如何定義你的功能:

void swap(int *i, int *j) 
{ 
    ... 
}