본문 바로가기
언어/C++

[C++ 기본 공부정리] 1. C++ 프로그래밍 준비 단계

by 민-Zero 2019. 11. 10.

공부 내용을 정리하는 목적 이므로 참고용으로만 읽어 주시기 바랍니다. 

틀린 부분에 대한 지적은 감사합니다.

코드를 짜면서 가장 많이 보게 되는 기본적으로 사용하게 되는 코드이다.

첫 줄부터 정리해보자.

 

1. #include 지시문

C++에서 입출력뿐만 아니라 많은 기본 기능은 C++ 언어 자체의 기능이 아니라 표준 라이브러리(Standard library)에 포함 되어 있는 기능이다. 따라서 사용하고자 하는 기능을 명시적으로 요청해야 사용할 수 있다.

전처리기에 표준라이브러리의 기능을 요청하는 방법이 #include 지시문이며 프로그램의 시작 부분에 등장한다.

 

구문

#include "~~"     #include <~~>

"   "

#include 지시문이 ""로 쓰인 경우 지시문이 포함된 파일과 ""안에 쓰인 파일을 찾아 내용을 불러온다. 동일한 디렉터리 내에 있어야 하며, 동일 디렉토리 내에 없을 경우 <>로 바뀌어 다시 진행된다.

<  > #include 지시문이 <>로 쓰인 경우 헤더를 찾아 내용을 불러온다. 이 헤더를 가르키는 문자열은 유일해야 하며 이  헤더가 꼭 파일일 필요는 X

헤더 파일을 읽어올 것인가 source file을 읽을 것인가의 차이인 것 같다.

일반적으로 ""는 사용자가 직접 정의한 헤더 <>는 표준 라이브러리 헤더에 사용하는데 이걸 차이로 이해해도 도움될 것 같다.

(위에 사용된 iostream의 경우 표준 입출력  라이브러리로 cin,cout 등의 기본 입출력 객체부터 파일이나 버퍼 스트림 객체까지 포함하는 가장 많이 쓰는 헤더. 다양한 라이브러리가 존재)

 

2. namespace

namespace란 클래스나 구조체 그리고 함수나 변수를 식별하는데 사용하는 논리적인 공간을 말한다.

예를 들어 프로젝트를 진행할때 A팀, B팀이 공동으로 작업하는데 모두 set이라는 동일한 이름의 함수를 사용하며 함수의 기능은 다르다고 가정 하자. 이때 공동 제작한 프로젝트 내에서 set 함수를 호출할 경우 A팀의 set과 B팀의 set 중 어떤 것을 호출하는 것인지 몰라 에러가 발생할 수 있어 이를 방지하기 위해 사용하는 것.

 

특징

같은 네임스페이스에 속해있는 식별자(클래스, 함수, 변수)호출하는 경우 네임스페이스 이름을 생략할 수 있다. 
외부 네임스페이스에 있는 식별자를 호출하는 경우 :: 을 이용한다. 
같은 이름을 갖는 식별자는 네임스페이스 내부에 하나 이상 존재할 수 없다.

 

사용 예)

 

위와 같이 사용자가 직접 namespace를 선언할 수 있다.

namespace 이름 {

       식별자

}

의 방법으로 사용자가 직접 선언하여 사용 가능하다.

외부의 네임스페이스 이므로 호출할 경우 이름::변수명 등으로 호출하여 동일 변수명 등과 구분하여 사용 가능하다.

 

네임스페이스를 중첩하여 사용하는 것 또한 가능하며 중첩된 네임스페이스 안의 변수나 함수 등을 사용할 경우 호출명이 너무 길어질 수 있기 때문에 별칭을 통해 줄여 쓰는 것이 가능하다.

 

 

using namespace std는 std라는 namespace를 현재 소스 내부에서 사용하도록 하는 명령어이다.

std 안에 C++ 표준 라이브러리의 모든 기능이 들어가 있기 때문에 자주 사용된다. (사용자의 식별자와 충돌 또는 새로 도입된 표준 라이브러리 기능들이 충돌하지 않게 하기 위해서 C++은 std로 기능들을 옮겼다.)

따라서 std::라는 외부 네임스페이스의 식별자를 호출을 일일이 작성하기 번거롭기 때문에 미리 동작시킨다.

(즉, std::cout << 의 경우 cout이란 함수가 namespace std 안에 정의되어 있다.)

 

3. main 함수

함수라는 것은 뒤에서 자세하게 정리할 것이다.

간단히 정리하면, main 함수 또한 함수이며 프로그램이 동작하는데 가장 중요한 부분이다. 프로그램 그 자체이며 main함수가 존재하지 않으면 프로그램은 동작하지 않는다. 우리가 동작시키고자 하는 코드들이 주로 들어가는 부분이며 main함수는 따로 호출하는 함수가 존재하지 않고 OS와 값을 주고받는다. 

main함수 또한 일반 함수와 마찬가지로 인자값을 입력받거나 값을 반환할 수 있다.

 

return의 경우 "예약어"이다.

return 은, 현재 있는 함수에서 빠져나가며, 그 함수를 호출했던 곳으로 되돌아 가라는 뜻이다.

return 은 함수의 어떤 곳에서도 위치할 수 있는데, return 이 실행되는 즉시 그 함수는 무조건 실행이 종료된다.

 

int main()의 경우 int형으로 선언이 되었기 때문에 반환 값 return 0;가 존재하는 것이며 0을 사용하는 이유는 정상적인 종료 코드로 예약이 되어 있기 때문이다.

void main()으로 반환 값이 없는 main함수로도 선언이 가능하다.

댓글