2012-11-15 2 views
0

이것은 내 코드의 일부입니다.이 오류의 원인은 무엇입니까? '유형'오류가 발생하기 전에? 내가 일종의 삭제하면 사라집니다 (편곡, 크기)를 main() 함수에서 ... 당신이 가장 가능성이 아닌 한 후 변수를 정의 할 수 없습니다, 따라서 엄격하게 C89이고 컴파일러를 사용하는누락; before 'type'error

#include <stdio.h> 

    void sort(int*, int); 

    int main() { 
     int arr[] = {5, 1, 3, 0, 9}; 
     int size = sizeof(arr)/sizeof(arr[0]); 

     sort(arr, size); 

     int i; 
     for(i = 0; i < size; i++) 
      printf("%d", arr[i]); 

     getchar(); 
     return 0; 
    } 

    void sort(int *array, int size) { 
     // ... 
    } 
+0

어떤 줄에 오류가 발생합니까? – SLaks

+2

FYI, 컴파일러 오류는 올바르게 게시 할 때 (예 : 줄 번호 포함) 훨씬 더 유용합니다. – ThiefMaster

+0

[ideone을 잘 컴파일하십시오] (http://ideone.com/emsN7k). – dasblinkenlight

답변

3

동일한 블록에있는 정의 코드. sort 호출 위의 int i;를 이동하고 다시 작동합니다 :

int main() { 
    int arr[] = {5, 1, 3, 0, 9}; 
    int size = sizeof(arr)/sizeof(arr[0]); 
    int i; 

    sort(arr, size); 

    for(i = 0; i < size; i++) 
     printf("%d", arr[i]); 

    getchar(); 
    return 0; 
} 

또는 더 나은, 컴파일러가 지원하는 경우 C99 표준을 사용하는 것이 좋습니다. 이것은 심지어 당신이 int i를 인라인 할 수 있도록 것 즉, 같은 : 당신은 사전 C99의 코드의 중간에 변수를 C. 이동 선언 할 수 없습니다 for(int i = 0; i < size; i++)

+0

글쎄, 나는 VS 2012를 사용하고 있습니다. 정확한 컴파일러 오류는 다음과 같습니다. C2143 구문 오류 : 누락; 앞에 - sort (arr, size) 행을 입력하십시오. 그것은 비록 devC++에서 작동합니다. BTW. int i : for ... 여기서도 작동하지 않습니다. – user1615069

+0

dev-cpp는 고대 컴파일러에 수 많은 버그가있는 고대 IDE입니다. 당신은 그것을 사용해서는 안됩니다. – ThiefMaster

2

당신의 int i; 블록의 시작 부분, 나머지 변수 선언의 근처.

3

적절한 구식 C를 사용하고 있다면 함수 호출 후에 변수를 정의 할 수 없습니다. 그래서

은 수행

#include <stdio.h> 

    void sort(int*, int); 

    int main() { 
     int arr[] = {5, 1, 3, 0, 9}; 
     int size = sizeof(arr)/sizeof(arr[0]); 
     int i; 

     sort(arr, size); 


     for(i = 0; i < size; i++) 
      printf("%d", arr[i]); 

     getchar(); 
     return 0; 
    } 

    void sort(int *array, int size) { 
     // ... 
    }