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

Posted by 테티스
,

Dev-C++도 통합 개발 환경이기 때문에 프로젝트를 만들고 컴파일하는 과정은 비교적 쉬운 편이다. 다음 순서대로 실습을 해 보자.

① Dev-C++을 실행한 후 파일/새로 만들기/프로젝트 메뉴를 선택하고 새 프로젝트 대화상자에 다음과 같이 입력한다.

사용자 삽입 이미지
Dev-C++로 콘솔, 윈도우즈 응용 프로그램, 라이브러리, DLL 등을 만들 수 있는데 두 번째 Console Application을 선택하고 프로젝트 이름은 First로 입력한다.

② 확인 버튼을 누르면 프로젝트를 저장할 디렉토리를 물어 보는데 C:\CExam\First 디렉토리를 지정한다. 아니면 디폴트로 선택되어 있는 Dev-C++ 디렉토리 밑에 First 서브 디렉토리를 지정할 수도 있다. 디렉토리는 실습을 시작하기 전에 미리 만들어 놓을 수도 있는데 디렉토리 선택 대화상자에서  버튼을 눌러 직접 만드는 것이 더 편리하다. First 디렉토리를 만들고 First.dev 파일을 이 디렉토리에 저장한다.

③ First 프로젝트안에 이미 main.cpp소스 파일이 포함되어 있고 이 파일에는 기본 C++ 코드까지 작성되어 있다. 지금은 직접 코드를 작성하는 실습을 해야 하므로 개발툴이 작성해 준 기본 소스를 모두 지운 후 다음과 같이 직접 입력해 보자. 화면에 korea라는 문자열을 출력하는 아주 간단한 프로그램이다.
사용자 삽입 이미지
④ 입력을 완료했으면 소스 파일을 저장한다. 파일/저장 명령을 선택하면 개발툴이 만들어준 main.cpp 파일의 이름을 변경할 기회를 주는데 First.cpp로 이름을 바꾸도록 하자. 가급적이면 프로젝트 파일의 이름과 소스 파일의 이름을 일치시키는 것이 편리하다.

⑤ 단축키 F9(컴파일/컴파일 후 실행)를 눌러 컴파일 및 실행한다. 오타가 없다면 별다른 에러없이 컴파일될 것이다. 콘솔 프로그램은 실행 직후에 바로 닫혀 버리므로 명령 프롬프트창에서 직접 실행해 봐야 결과를 확인할 수 있다. C:\CExam\First\First.exe를 실행하면 korea 문자열이 화면으로 출력될 것이다.

Dev-C++은 컴파일러의 성능으로 보나 통합 개발 환경의 편리함으로 보나 상당히 잘 만든 컴파일러임에는 틀림이 없다. 이 책의 거의 모든 예제들은 Dev-C++로도 컴파일 가능하지만 약간의 차이점이 있다. 98년 제정된 표준은 main 함수의 리턴 타입으로 int형을 권장하는데 Dev-C++은 이를 너무 고지식하게 해석하여 int만 인정한다. 그러나 비주얼 C++은 이전 문법과의 호환을 고려하여 void형도 인정한다는 차이점이 있다.

이 책의 예제들은 main의 리턴 타입으로 void형만 사용하는데 이는 main의 리턴값에 별 의미도 없을 뿐더러 예제가 짧아지는 효과가 있기 때문이다. 그래서 Dev-C++로 실습을 진행하는 사람들은 예제에서 main 앞의 void를 int로 바꿔서 입력해야 한다는 약간의 번거로움이 있다. 이후 이 점에 대해서는 더 이상 언급을 하지 않을 예정이므로 Dev-C++ 사용자는 이 점을 잘 숙지하기 바란다.

Posted by 테티스
,

TC20

프로그래밍/C/C++ 강좌 2007. 5. 28. 08:16

터보 C 2.0은 별도의 프로젝트를 만들 필요가 없고 심지어 파일을 저장하지 않고도 컴파일해 볼 수 있어 문법 실습 과정이 무척 간편한 편이다. C:\TC 디렉토리의 TC.exe를 실행하고 중앙의 소스 편집창에 다음과 같이 소스를 입력한다.

사용자 삽입 이미지
소스를 First.c로 저장한 후 Ctrl+F9로 컴파일 및 실행한다. 터보 C는 도스용 프로그램을 생성하므로 콘솔창에서 실행된 후 금방 통합 개발 환경으로 다시 돌아와 버리기 때문에 명령 프롬프트창에서 실행 파일을 실행해야 결과를 볼 수 있다. 명령 프롬프트창에서 First.exe를 실행하면 korea라는 문자열이 화면으로 출력될 것이다.

터보 C 2.0은 아주 오래된 컴파일러이지만 이 책의 C 소스들은 대부분 이 컴파일러로 실행해 볼 수 있다. 그러나 C++은 물론이고 99년에 개정된 새로운 C 문법을 지원하지 못하며 한글도 제대로 쓸 수 없기 때문에 특별한 이유가 없는 한 이 컴파일러로 실습을 진행하는 것은 바람직하지 않다. 뿐만 아니라 이 책이 실습용 헤더 파일로 사용하고 있는 windows.h 를 제공하지 않아 몇 가지 함수를 쓸 수 없는 문제도 있다. 이 책에서는 이런 컴파일러도 있다는 것을 소개만 하기로 하고 다시는 언급하지 않을 것이다.

Posted by 테티스
,