2-1-마.에러에 대한 대처

비주얼 C++은 최신의 개발툴이며 다양한 종류의 프로젝트 개발을 지원하고 온갖 강력한 기능으로 중무장되어 있다. 너무 많은 기능을 제공하다 보니 사용법도 복잡하고 어려워서 초보자들의 첫 실습이 순탄하지 못한 경우가 많다. 사소한 실수로 인해 컴파일이 제대로 되지 않을 수도 있는데 이럴 때 컴파일러는 다음 두 방법으로 사용자의 실수를 지적해 준다.

 

에러(Error) : 문법상 명백하게 잘못된 점이 있어서 번역을 할 수 없는 경우 에러 메시지를 출력하고 컴파일을 거부한다. 가장 흔한 경우로 오자와 탈자가 있고 형식이 맞지 않다든가 반드시 필요한 지정이 빠진 경우 등이 에러로 처리된다. 에러가 있는 상태로는 컴파일을 계속할 수 없으므로 반드시 수정해야 한다.

경고(Warning) : 의심스러워 보이는 문장이기는 하지만 일단 컴파일은 가능한 경미한 실수를 했을 때 경고를 출력한다. 또는 당장은 큰 문제가 없지만 이식성에 불리하다거나 권장되지 않는 방법으로 문장을 작성했을 때도 경고가 발생된다. 경고의 내용을 읽어 보고 타당한 지적이라면 수정하고 그렇지 않다면 무시할 수도 있다.

 

에러와 경고는 둘 다 컴파일러의 출력창(Output)에 나타나며 말로 된 친절한 형태로 되어 있으므로 읽어 보면 어디가 어떻게 잘못되었는지를 쉽게 파악할 수 있다. 만약 First 예제를 실습하는 중에 다음과 같이 입력했다고 해 보자.

 

#include <stdio.h>

 

void main()

{

     print("korea\n");

}

 

printf라고 써야 하는데 끝의 f를 빼먹고 print라고 잘못 썼다. 이 상태에서 컴파일하면 다음과 같은 에러 메시지가 출력되며 컴파일은 실패한다.

에러의 원인과 발생 위치를 한글로 된 메시지를 통해 자세히 알려 주므로 어디가 잘못되었는지 쉽게 파악할 수 있다. 다음은 6.0의 에러 메시지인데 영어로 되어 있다.

First.cpp의 다섯 번째 줄에 있는 print라는 말이 무엇인지 모르겠다는 뜻이다. 이 메시지를 더블클릭하면 에러가 발생한 줄로 즉시 이동하는데 print를 printf로 수정하고 다시 컴파일하면 제대로 컴파일될 것이다.

이번에는 printf("korea\n")의 끝에 있는 세미콜론을 빼먹었다고 해 보자. C언어는 모든 명령의 끝에 세미콜론을 붙이도록 되어 있는데 이 기호가 빠지면 문법적인 오류로 인해 역시 컴파일되지 않는다. 다섯 번째 줄의 끝을 찾을 수 없기 때문에 여섯 번째 줄의 }를 만났을 때 } 앞에 세미콜론이 없다는 에러 메시지가 출력된다.

보다시피 소스상의 오타나 탈자 등의 단순한 실수는 컴파일러가 어디가 잘못되었는지를 알려 주기 때문에 큰 문제가 되지 않는다. 에러 메시지의 내용을 확인하고 틀린 곳으로 이동한 후 컴파일러가 지적해 준대로 수정하고 다시 컴파일하면 그만이다. 그러나 다음과 같은 에러 메시지는 의미하는 바를 금방 알기 어렵다.

WinMain이라는 함수를 찾을 수 없다는 뜻인데 이 에러 메시지는 마법사에서 콘솔이 아닌 Windows 응용 프로그램(6.0의 경우 Win32 Application)을 선택했을 때 나타난다. 윈도우즈용 프로그램은 반드시 WinMain이 있어야 하는데 이 함수가 보이지 않기 때문에 제대로 컴파일할 수 없다는 뜻이다. 이럴 경우는 프로젝트를 지우고 새로 만들되 반드시 콘솔 응용 프로그램을 제대로 선택하도록 하자.

사람은 누구나 실수를 할 수 있고 복잡한 프로그램을 작성하는 개발자는 특히 더 많은 실수를 할 수 있다. 대부분의 개발툴들은 개발자의 실수를 친절하게 알려주며 수정할 수 있는 기회를 주므로 실수를 두려워할 필요가 없으며 개발툴이 알려주는대로 수정하면 된다. 초보자들은 이 예제를 만들면서 대부분 한 두 번의 실수를 하겠지만 스스로 오류를 극복할 수 있을 것이다.

그래도 프로젝트를 직접 만드는 것이 어렵다면 다음 동영상을 참조하기 바란다. 동영상에는 비주얼 C++ 7.0과 6.0, 그리고 Dev-C++로 프로젝트를 처음 만드는 과정을 그대로 수록해 놓았으므로 이대로 따라하기만 하면 된다.

 

http://www.winapi.co.kr/clec/CFirst70.avi

http://www.winapi.co.kr/clec/CFirst60.avi

http://www.winapi.co.kr/clec/CFirstDev.avi

 

만약 이 동영상을 보고도 First 프로젝트를 만들 수 없다면 마지막 방법을 쓸 수밖에 없다. 주변에 프로그래밍을 잘 하는 사람에게 밥 한 그릇(또는 술 한 잔이나 소개팅 한 번)을 사 주고 도움을 청해서 프로젝트를 만드는 방법을 배우기 바란다. 스스로 프로젝트를 만들 수 없다면 문법 공부를 할 수가 없으니 이 실습은 반드시 스스로 할 수 있어야 한다.