2013-01-31 1 views
2

가능한 중복 :
What should main() return in C/C++?Hello.c : 'main'함수에서 : Hello.c : 13 : 경고 : 'main'의 반환 유형이 'int'가 아닙니까?

그냥 기본적인 자바 코딩의 몇 달 후, 시간 전에 C 코딩 시작하고, 기본 안녕하세요 세계 프로그램을 컴파일하는 문제가 발생하고있다. 여기

내 코드입니다 :

#include < stdio.h> 

void main() 
{ 
    printf("\nHello World\n"); 
} 

와 내가 컴파일 할 때이 내가 돌아갈 것입니다 :

작성한 Hello.c : 작성한 Hello.c : '주'기능에 13 : 경고 : 'main'의 반환 유형이 'int'가 아닙니다.

어떤 도움을 주셔서 감사합니다.

+3

'void'를'int'로 변경하십시오. – jxh

+4

더 좋은 책이나 튜토리얼을 얻으십시오 :'void main'이 틀립니다 - int main이어야합니다. (불행히도 거기에는'void main'을 사용하는 나쁜 책이 몇개 있는데, 종종 웹의 코드 예제에서 이것을 보게 될 것입니다.) –

+0

@PaulR, 나쁜 C/C++ 책에 대한 민감한 테스트 중 하나는'void main()'을 사용한다는 것입니다. 매우 훌륭한 자료는 http://lysator.liu.se/c에있다. – vonbrand

답변

3

그 다음

int main() {} 

해야 당신이해야 return 0 오류가 발생했을 경우 프로그램이 다른 번호가 올바르게 종료 또는 경우. 이것은 유닉스 관례이므로 스크립트는 프로그램이 올바르게 종료되었거나 오류가 발생했는지 확인할 수있다.

+0

표준은'#include '....'exit (EXIT_SUCCESS)'또는'exit (EXIT_FAILURE)'라고 말합니다 – vonbrand

+1

샌더드는 뭐라고 말합니까? 일반적으로 종료 코드의 다른 값이 사용되므로 오류를 구별 할 수 있습니다. – LtWorf

0

main()에 대해 선택한 프로토 타입에 관계없이 반환 값은 void 일 수 없습니다. int이어야합니다. 많은 책과 튜토리얼은 잘못되었지만 일부 컴파일러는 불평하는 경향이 있지만 다른 컴파일러는 불평하는 경향이 있습니다. main에 대한

#include < stdio.h> 

int main() 
{ 
    printf("\nHello World\n"); 
    return 0; 
} 
+0

'main'의 리턴 타입은'void'가 될 수 있습니다. 다른 것은 무엇이든간에, 시그니처가 유효한지 아닌지 구현 정의되어 있으며, 그 행동은 명시되지 않을 수 있습니다. – effeffe

+0

@effeffe 오래된 질문에 대한 게시를 되살려 죄송하지만 C++ 표준 섹션 3.6.1.2에서는 "구현시 main 함수를 미리 정의하지 않아야합니다.이 함수는 오버로드되지 않아야하며 int 유형의 반환 유형을 갖습니다. (int argc, char * argv []) 구현의 정의는 구현 정의이다. 모든 구현은 다음의 두 가지 모두를 허용해야한다 : 'int main() {/ *.. * /}' 과 int main) {/ *.. * /}' – jodag

+0

@jodag이 질문은 C가 아니라 C에 관한 것입니다. – effeffe

2

주요 기능은 int를 반환한다 표준.

구현 을 지원하고 void main()을 지원하지만 명시 적으로 문서화해야합니다. 그렇지 않으면 동작이 정의되지 않습니다. dandan78이 말한 것처럼 개의 책과 온라인 참조 수가 잘못되었습니다.

3

표준 서명이 중

int main(void) 

또는

int main(int argc, char **argv) 

귀하의 컴파일러는 단순히을 시행되어 있습니다 : C에서

+0

감사합니다, 정확한 아이디어를 어디서 찾을 수 있을지/초보자 가이드 C 온라인? 감사합니다 후 부부를 통해 보면 많은 실수를 범하게됩니다. –

+0

@JoePerkins : 저는 개인적으로 초보자를위한 * 온라인 * 튜토리얼이나 가이드를 잘 모릅니다. 내가 본 모든 사람들은 꽤 비참합니다. 그러나, [comp.lang.c FAQ] (http://c-faq.com)이 있는데, 이것은 꽤 좋으며, 최신 언어 표준이 여기에 있습니다 (http : //www.open-std .org/jtc1/sc22/wg14/www/docs/n1570.pdf). 가장 위대한 * 학습 * 자원도 아니지만 적어도 당신을 타락으로 인도하지는 않습니다. –

+0

@JoePerkins는 좋은 책을 사서 여기에있는 c 태그의 정보 페이지에서 목록을 찾을 수 있습니다. – effeffe

관련 문제