본문 바로가기
Program Language/c++

c++ 기초("Hello, World!")

by 토담이아빠 2022. 12. 22.

Hello world

 

이글은 "전문가를 위한 c++(개정4)" 학습한 내용을 직접 실습해보며 정리한 Review 글입니다.


Hello, World!

 

프로그램언어의 공식 예제인 "Hello, World!" 코드를 통해 간단하고 중요한 개념들을 알아봅시다.


//helloworld.cpp
/*프로그래밍 언어의 공식 예제 
'Hello,World */
#include <iostream>
 
int main()
{
	std::cout << "Hello, World!" << std::endl;
	return 0;
}

코드에는 4가지의 중요한 개념이 담겨있습니다.

 

  1. 주석
  2. 전처리 지시자
  3. main() 함수
  4. I/O 스트림(입출력 스트림)

 

첫번째 주석부분입니다.


//helloworld.cpp
/*프로그래밍 언어의 공식 예제 
'Hello,World */

주석처리  두가지 방법이 있습니다. 한줄 주석처리 시 // 사용하며 여러  주석 처리시에는 /* */ 사용합니다.

 

두번째 전처리 지시자입니다.


#include <iostream>

#으로 시작하는 #include 부분이 전처리 지시자입니다. 전처리 지시자에 의해 <iostream> 헤더파일을 현재파일에 사용할 수 있도록 전처리기에 지시하는 내용입니다.

이외에도 전처리 지시자에는

 

  • #define [키]  [값] : 코드에서 [키]에 해당하는 부분을 모두 [값]으로 지정한 내용으로 바꾼다.
  • #ifdef [키] ~ #endif : [키]값이 #define문으로 정의됐는지 여부에 따라 #ifdef ~ #endif로 묶인 블록을 포함시키거나 제외한다.
  • #findef[키] ~ #endif : [키]값이 #define문으로 정의됐는지 여부에 따라 #ifndef ~ #endif로 묶인 블록을 포함시키거나 제외한다.
  • #progma [xyz] : [xyz]에 대한 구체적인 동작은 컴파일러마다 다르다. 주로 전처리 과정에서 이 지시자에 도달할 때 경고나 에러 메세지를 화면에 표시하는 용도로 사용한다. 

 

등이 있습니다.

사용 예를 보면 보통 헤더파일의 중복 인클루드를 방지하고자 다음과 같이 작성합니다.


#ifndef MYHEADER_H
#define MYHEADER_H
 
//myheader.h
 
class A
{
public:
	A() = default;
	~A() = default;
};
 
#endif

동일한 기능으로 다음과 같이 작성해도 됩니다.

#pragma once
 
//myheader.h
 
class A
{
public:
	A() = default;
	~A() = default;
};

#pragma once는 최신 컴파일러는 대부분 지원을 하므로 더 마음에 드는 쪽을 선택하면 되겠습니다.

 

세번째는 main()함수입니다.

프로그램은 항상 main()함수에서 시작합니다. main()함수는 int값을 리턴하는데 리턴 문장 생략 시에는 자동으로 0 리턴합니다.  main()함수는 두개의 매개변수를 받도록 작성할 있습니다.


int main(int argc, char* argv[])

argv 전달할 인수의 값을 담습니다. argv[0]에는 파일명을 포함한 절대 경로 또는 상대경로가 들어갑니다.

agv[1] ...argv[n]까지는 매개변수가 들어갑니다. argc에는 argv[]에서 지정한 인수의 개수가 자동으로 지정됩니다.

 

네번째는 I/O 스트림(입출력 스트림)입니다.


std::cout << "Hello, World!" << std::endl;

std::cout 출력 스트림을 받습니다. << 의해 구분되어지는 내용들을 순서대로 전달하고 std::endl 나타나면 모두 출력하고 다음 줄로 넘어갑니다. 문장의 끝은 이스케이프 시퀀스로도 표현할 있습니다.


std::cout << "Hello, World\n";

std::endl 대신 \n을 문장끝에 써도 동일한 기능을 수행합니다. 추가로 몇가지 이스케이프 시퀀스를 소개합니다.


이스케이프 시퀀스 설명
\n 줄바꿈
\r 캐리지 리턴(출력 커서를 처음으로 옮김)
\t
\\ 역슬래시(\)
\" 따옴표

스트림은 입력으로도 사용됩니다. 다음과 같이 사용하면 키보드로부터 입력된 정수값을 받아서 value 변수에 저장합니다. 이때 스트림 방향은 출력과 반대로 >>연산자를 사용합니다.


int value;
std::cin >> value;

 

'Program Language > c++' 카테고리의 다른 글

C++ 기초(구조체)  (0) 2023.01.03
c++ 기초(enum)  (0) 2023.01.02
c++ 기초(연산자)  (0) 2022.12.29
c++ 기초(리터럴 & 변수)  (0) 2022.12.26
c++ 기초(namespace)  (0) 2022.12.22

댓글