[완료]MinGW에서 undefined reference to `WinMain@16' 에러가 뜨네요.

gold5230의 이미지

안녕하세요. 얼마 전에 c언어 공부를 시작한 학생입니다.
java도 같이 개발할수 있는 이클립스(cdt)를 사용해서 컴파일 했습니다.(컴파일러는 MinGW입니다.)

#include <stdio.h>
 
 
int func_Plus(int plus_a, int plus_b)
{
int plus_sum = plus_a + plus_b;
 
 
return plus_sum;
}
 
 
int func_Minus(int minus_a, int minus_b)
{
int minus_sum = minus_a - minus_b;
 
 
return minus_sum;
}
 
 
int func_Product(int product_a, int product_b)
{
int product_sum = product_a * product_b;
 
 
return product_sum;
}
 
 
int func_Devide(int devide_a, int devide_b)
{
int devide_sum = devide_a / devide_b;
 
 
return devide_sum;
}
 
 
 
 
void Main()
{
int a, b, c;
printf("1=더하기,2=빼기,3=곱하기,4=나누기");
printf("명령 입력 :");
scanf("%d\n", &c);
 
 
printf("a 입력 :");
scanf("%d\n", &a);
printf("b 입력 :");
scanf("%d\n", &b);
if(c == 1){
printf("%d", func_Plus(a, b));
}
 
 
if(c == 2){
printf("%d", func_Minus(a, b));
}
 
 
if(c == 3){
printf("%d", func_Product(a, b));
}
 
if(c == 4){
printf("%d", func_Devide(a, b));
}
 
if(c > 4){
printf("System error. please restart.");
}
 
 
return;
}

이 코드에 어떠한 문제가 있는건가요?(근데 또 저 소스 말고 다른 소스도 다 저 에러가 뜨더라구요, 그래서 코드 문제는 아니라고 생각하고 있습니다. 컴파일러쪽이 문제라고 생각하는데..흠)

저런 에러는 처음 보는거라서..

저는 윈도우 관련 소스이 아니라. 그냥 평범한 콘솔 소스를 하나 짰을 뿐인데..

저런 에러는 어떻게 해결할 수 있나요?

shint의 이미지

void Main() 을
int main() 으로 바꿔보세요.
return ;은 return 0; 으로 바꾸구요.

----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.

매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.

각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com

gold5230의 이미지

이번 주에 제사를 지내고 와서 확인을 못했네요.

그냥 void main을 안 쓰는게 속 편하겠습니다.

그나저나, 제 질문만 다른 분들에 비해서 너무 수준떨어지는것같아서..부끄럽네요.

planetarium의 이미지

기운 내세요.

어쨌든 여기서 핵심은 반환값 자료형이 아니라 대소문자 (Main과 main의 차이) 입니다.

익명 사용자의 이미지

저도 처음 이 메세지를 받고 인터넷 여기 저기를 찾아 보았는데, 알고 나니 아주 간단하더군요.
결론적으로 말씀 드리면

1. 프로젝트 Explorer 창에서 원하는 프로젝트 위에서 오른쪽 마우스 버튼을 눌러 Properties를 선택합니다.
2. Tool Settings TAB에 나와 있는 메뉴 중에 GCC C Compiler >> Miscellaneous를 선택합니다.
3. 오른쪽에 나타나는 Other flags 밑에 나타나 있는 Option 중에서 "Support ANSI programs (-ansi)"를 체크하고 Apply 버튼을 누릅니다.

Main과 main의 차이라든지, Console Application과 Windows Application의 차이, void main()과 int main() 라는 등 저도 다른 분들의 답을 다 따라해 보았는데 안되더군요.

같은 오류 메세지를 받고 이리 저리 헤매이던 분들, 이 옵션으로 문제 해결이 되었으면 좋겠습니다.

익명 사용자의 이미지

제가 올린 위의 글에 잘못이 있어 수정을 해야하는데 어떻게 할지 몰라 다시 올립니다.

위처럼 "Support ANSI programs" 옵션을 선택하면 컴파일 상에는 문제가 없지만, 한 가지 엄청나게 불편한 점이 있다는 것을 깜빡 잊어버렸군요. 이 옵션을 사용하면 Single Line Comment '//'를 사용 못합니다. 컴파일 때에 오류가 발생하는데 '/*'와 '*/'의 형식 밖에 사용 못한다면 굉장히 불편하지요.
아래와 같이 하시면 됩니다.

Support ANSI programs option은 체크하지 마시고 그냥 둡니다.
Other flags 뒤에 빈 칸이 있는데, 거기에 아래와 같이 입력하고 다시 Project를 Build하여 보십시오.

-c -fmessage-length=0

hoon050824의 이미지

감사합니다

6년이라는 시간의 벽을 넘어서
저를 구원해 주셨습니다

무야호오옹의 이미지

축하드려요!!

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.