2014-01-26 2 views
1

좋아요, C에서이 프로그래밍 할당을 받았으므로 Pelles C를 사용하여 작업했는데 모든 것이 지금까지 팽창했지만 결국에는 실행 중이어야합니다. 대학의 유닉스 시스템. 그래서 나는 그들의 유닉스에서 컴파일을 시도하고 갑자기 나는 존재하지 않았던 오류 더미를 얻고있다. "Unix 컴파일러 만있는 오류 메시지

:

cc main.c 

나는이 오류가 ...

#include <stdio.h> 

int main (int argc, char* argv[]){ 
    printf("Hello World"); 
    int anInt; 

    return 0; 
} 

내가 컴파일 명령을 제공 :

그럼 내가 메인 함수로이있어 가정 해 봅시다 main.c ", 5 행 : 앞에 또는 구문 오류 :

... 일반적인 사례가있는 사례 중 하나입니다. 인터넷을 통해 유닉스 명령의 르하지만 그것은 실제로 당신이 사용하는 사람이 아니에요? 또는 Pelles C가 "틈을 메우고 있습니다"라고 여기에 있습니까? 아니면 그 컴파일러에 뭔가있는 것이 있습니까, 아니면 무엇입니까?

+3

은 아마 HTTP 관련 : //stackoverflow.com/questions/288441/variable-declaration-placement-in-c –

+0

예 ... 그게 전부입니다. 환경/컴파일러에 따라 C가이 규칙에서 일치하지 않을 수 있습니다. – user1299656

답변

5

본 적이 없습니다. 우분투 서버에서 해보았을 때 소스 코드가 잘 컴파일되었습니다.

hello.c: In function ‘main’: 
hello.c:5:5: warning: ISO C90 forbids mixed declarations and code [-Wpedantic] 
    int anInt; 
    ^

그래서, 솔루션은 C90 이후의 표준을 지원하는 컴파일러를 찾기 위해, 또는 코드 앞에 선언을 이동하는 소스를 변경하려면 : 나는 -pedantic 플래그를 사용하려고 할 때 그러나, 나는 다음과 같은 오류가 발생했습니다 :

더 정확하게
#include <stdio.h> 

int main (int argc, char* argv[]){ 
    int anInt; 
    printf("Hello World"); 

    return 0; 
} 

, 변수가 범위하고있는 블록의 코드 앞에 선언해야합니다, 그래서 이것은 너무 유효합니다

#include <stdio.h> 

int main (int argc, char* argv[]){ 
    printf("Hello "); 

    { 
     int anInt; 
     printf(" World"); 
    } 
    return 0; 
} 
+0

감사합니다. 불행히도 저는 컴파일러가 붙어있어서 선언문과 코드를 별도로 보관해야합니다. – user1299656

관련 문제