' [C/C++] 1강 - Hello, World!

Programming/C & C++

[C/C++] 1강 - Hello, World!

mdisprgm 2021. 6. 4. 23:12
728x90

(1) Hello World! 의 유래

Hello World는 거의 모든 프로그래밍 강의나 서적에서 처음 시작하는 예제로 채택되는데

 

그 이유가 처음 C언어와 UNIX를 개발한 데니스 리치브라이언 커니핸 두 사람이 쓴 "The C Program Language" 책에서 처음 시작된 것이

 

지금까지 내려져온 것이라는..

 

(2) 프로젝트 생성하기

먼저 Visual Studio(이하 vs)를 실행해주고

 

처음 만드는 것이니 새 프로젝트 만들기 클릭

빈 프로젝트를 선택,

 

콘솔 앱으로 해도 되지만 빈 프로젝트를 권장함.

프로젝트 이름을 HelloWorld로 지정하고

 

그대로 만들어주면 됨.

 

저 노란색 박스는 예제 작성 수준에서는 체크해도 상관 없는데

 

경우에 따라 한 솔루션(sln) 내에서 여러 프로젝트(vcproj)가 존재하기도 함.

이제 소스파일을 만들어 줄건데

 

솔루션 탐색기 -> 소스 파일 우클릭 -> 아래 경로를 따라도 되고

편하게 단축키 Ctrl + Shift + A 를 눌러도 된다.

 

그래도 명색이 컴퓨터 좀 배우겠다는 사람인데.. 단축키를 쓰는 게.. ㅋㅋ

 

 

 

 

그리고 뜨는 창에서

 

C++ 파일을 선택하고

 

추가를 해주면 끄-읕

파일명을 보통 main.c, main.cpp로 많이 하던데

 

이 강좌에서는 ex01, 02로 하도록 하겠다.


(확장자를 .c가 아닌 .cpp로 하는 이유는 지난 0강에서 설명한 바와 같다)

(앞으로의 강좌에서 cpp에서만 지원하는 기능 중에 편리한 기능들이 몇있는데 c 공부하면서 같이 알면 좋을 것 같은 것들을 같이 설명할 것이다)

(물론 c 프로그램을 작성할 때는 해당 기능들은 사용하지 않는다)


 

아래 짧은 코드를

 

복붙도 좋지만 직접 따라쳐서.. 

 

#include <stdio.h>

int main(void) {
	printf("Hello, World!\n");

	return 0;
}

 

상단 메뉴에서 디버그 -> 디버그하지 않고 시작

 

을 클릭하면 프로그램이 실행된다.

 

디버깅은 코드에 중단점이란 걸 잡고 프로그램을 한 줄씩 실행시키면서 버그를 고치는 행동인데

 

그러지 않을 거라면 디버그하지 않고 시작을 해도 된다.

 

이것도 단축키 Ctrl + F5 가 몇배는 편하니 기억하기.

 

 

실행 결과

 

 

간단하게 코드를 리뷰하자면

#include <stdio.h> 이렇게 맨 앞에 # 이 붙은 줄은 전처리기라고 함.
컴파일러가 본격적으로 컴파일하기 전에 작업하는 일들을 명시해줌.
include 전처리기는 뒤에 오는 파일에 정의된 것들을 사용하겠다는 뜻.
위 코드에선 다양한 입출력을 위한 함수, 타입 등이 정의된 stdio.h(Standard Input, Output)이 include 됨
int main(void) { } 프로그램의 시작점(Entry Point)이다. 프로그램이 실행되면 이 main을 찾음.
코드 내에서 main() 이렇게 괄호가 붙는다면 대부분 함수라는 것을 정의하거나 호출하는 것이니 기억해두기.
printf(); 위에서 말한 stdio.h 에 정의되어 있는 함수임. 콘솔창에 정해진 포맷대로 문자열을 출력함.
return 0; return; 은 함수의 끝을 의미함. 프로그램의 시작점인 main이 return한다는 것은 곧 프로그램의 종료를 의미하는 것.
return 0;이라 하면 이 함수는 0을 돌려주면서(말그대로 return) 종료하게 되는데, 우리는 이걸 유식하게 함수의 반환이라고 부른다.
main이 0을 리턴한다면 그것은 프로그램이 에러 없이 정상적으로 종료됐다는 의미.

추가로 C언어에서 명령줄 한 줄이 끝나면 반드시 ; (세미콜론)을 붙여줘야 한다.

 

컴파일러에게 '이 줄은 여기까지가 끝이야'라고 알려주는 것, 그렇지 않으면 오류가 발생하게 됨.

 

 

끝.

728x90

'