이글은 "전문가를 위한 c++(개정4판)"을 학습한 내용을 직접 실습해보며 정리한 Review용 글입니다.
Hello, World!
프로그램언어의 공식 예제인 "Hello, World!" 코드를 통해 간단하고 중요한 개념들을 알아봅시다.
//helloworld.cpp
/*프로그래밍 언어의 공식 예제
'Hello,World */
#include <iostream>
int main()
{
std::cout << "Hello, World!" << std::endl;
return 0;
}
위 코드에는 4가지의 중요한 개념이 담겨있습니다.
- 주석
- 전처리 지시자
- main() 함수
- 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 |
댓글